2017-12-29 7 views
2

次の画像があります。複数のファイルは、linuxシェルスクリプトを使用して名前を変更します

10.jpg 
11.jpg 
12.jpg 

上記の画像を削除します。次のシェルスクリプトファイルを使用しました。だから、どのように自分自身を取得するためにCOUNT値10を設定する

Img_10.jpg 
Img_11.jpg 
Img_12.jpg 

for file in /home/scrapping/imgs/* 
do 
    COUNT=$(expr $COUNT + 1) 
    STRING="/home/scrapping/imgs/""Img_"$COUNT".jpg" 
    echo $STRING 
    mv "$file" "$STRING" 
done 

だから、私はこのようなファイル名を置換する、ファイル名

Img_1.jpg 
Img_2.jpg 
Img_3.jpg 

を置き換えしかし、出力?

+0

カウントに10をあらかじめ割り当てますか? –

+0

'for'の前に' count'変数を初期化します。 –

+0

@ValdeirPsr初期化しましたが動作しません。 – Jayesh

答えて

4

exprの構文は古くなっています。POSIXシェルでは、$(())の構文で算術評価を行うことができます。あなただけのコメントで報告されたエラーからも

#!/usr/bin/env bash 

count=10 
for file in /home/scrapping/imgs/*; do 
    [ -f "$file" ] || continue 
    mv "$file" "/home/scrapping/imgs/Img_$((count++)).jpg" 
done 

を行うことができ、あなたはdashシェルからそれを実行しているようです。標準のPOSIXシェルに準拠するすべての機能を備えているようには見えません。 shまたはbashシェルで実行してください。

シェルスクリプトのユーザー定義変数には、常に小文字を使用してください。大文字は、主にシェル自体によって管理される環境変数のためのものです。

1

renameコマンドを使用すると、IMG_であなたのファイルをサフィックスすることができます

rename 's/^/Img_/' * 

^手段はすなわちIMG_、とファイル名の先頭を置き換える:接尾辞を追加します。

関連する問題