フォルダ内のすべてのファイルの名前を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桁です。