ファイル名を昇順に一括変更

ファイル名を昇順に一括変更

次のようなバッチファイルがあります。

$ ls
Li1Fe1O2_11 Li1Fe2O3_8  Li1Fe3O4_2  Li1Fe3O4_5  Li2Fe1O3_16 Li2Fe2O4_12 Li3Fe1O4_19 Li3Fe1O4_22
Li1Fe1O2_14 Li1Fe2O3_9  Li1Fe3O4_3  Li1Fe3O4_6  Li2Fe1O3_17 Li2Fe2O4_13 Li3Fe1O4_20
Li1Fe2O3_7  Li1Fe3O4_1  Li1Fe3O4_4  Li2Fe1O3_15 Li2Fe2O4_10 Li3Fe1O4_18 Li3Fe1O4_21

名前を次のように変更したいと思います。

enum-00132
enum-00133
enum-00134
...

私は成功せずに名前を変更しようとしました。

ベストアンサー1

これを使用してください:

c=132
for f in *; do
  mv -v "$f" "enum-$(printf '%0*d' 5 $c)"
  c=$(($c+1))
done

これはc=<your_starting_number>あなた132の質問と同じです。次に、for現在のディレクトリのすべてのファイルを繰り返します。このコマンドは各ファイルに対してmv呼び出されます。このprintfユーティリティは、先頭にゼロの付いた新しいファイル名を出力します。最後に、カウンタ変数は$c+1増加します。

編集する:ディレクトリのみを希望する場合は、次を使用します(*/ディレクトリのみを使用し、残りは変更しません)。

c=132
for d in */ ; do
  mv -v "$d" "enum-$(printf '%0*d' 5 $c)"
  c=$(($c+1))
done

おすすめ記事