フォルダ内のすべてのファイルの名前をPREFIX+COUNTER+FILENAMEに変更したい
例:
入力:
england.txt
canada.txt
france.txt
出力:
CO_01_england.txt
CO_02_canada.txt
CO_03_france.txt
承認された回答:
これはあなたが求めることを行います:
n=1; for f in *.txt; do mv "$f" "CO_$((n++))_$f"; done
仕組み
-
n=1これにより、変数
nが初期化されます 1に。 -
for f in *.txt; doこれにより、名前が
.txtで終わる現在のディレクトリ内のすべてのファイルのループが開始されます。 。 -
mv "$f" "CO_$((n++))_$f"これにより、ファイルの名前が
CO_になるように変更されます。nのプレフィックス カウンターとして。++シンボルは、変数nをインクリメントするようにbashに指示します 。 -
doneこれにより、ループの終了が通知されます。
改善
このバージョンはprintfを使用します これにより、数値のフォーマット方法をより細かく制御できます:
n=1; for f in *.txt; do mv "$f" "$(printf "CO_%02i_%s" "$n" "$f")"; ((n++)); done
特に、%02i nの場合、formatは数値の前に先行ゼロを置きます まだ1桁です。