9

ランダムな名前の .jpg ファイルがたくさんあります。次のように名前を変更するbashスクリプトが必要です。

basename-0.jpg
basename-1.jpg
basename-2.jpg
.
.
.
.
basename-1000.jpg

私はこれを書きました:

n = 0;
for file in *.jpg ; do mv  "${file}" basename"${n}".jpg; n+=1;  done

しかし、上記の bash の問題は、ループでは n が文字列と見なされるため、n+1 は新しく移動したファイルの末尾に別の '1' を追加するだけです。あなたのヒントに感謝します。

4

3 に答える 3

3

'basename' または $(basename) が必要ですか? より一般化された形式は次のとおりです。

# create basename-0.jpg, basename-1.jpg, ... basename-n.jpg
e='jpg'; j=0; for f in *.$e; do mv "$f" basename-$((j++)).$e; done

また

# preserve stem: <stemA>-0.jpg, <stemB>-1.jpg, ... <stem?>-n.jpg
e='jpg'; j=0; for f in *.$e; do mv "$f" "${f%.*}"-$((j++)).$e; done
于 2013-10-19T18:40:46.837 に答える