フォルダ内のすべてのファイルの名前を次のように変更したいと思います。PREFIX+COUNTER+FILENAME
例えば。入力する:
england.txt
canada.txt
france.txt
出力:
CO_01_england.txt
CO_02_canada.txt
CO_03_france.txt
ベストアンサー1
リクエストされた内容は次のとおりです。
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
この++
シンボルはbashに変数を増やすように指示しますn
。done
これはサイクルの終わりを示します。
改善する
このバージョンでは、printf
これを使用して数値形式をより効果的に制御できます。
n=1; for f in *.txt; do mv "$f" "$(printf "CO_%02i_%s" "$n" "$f")"; ((n++)); done
特に、この形式は、数字がまだ1桁の場合は、%02i
数字の前に0を付けます。n