Love澤's Room

技術系ネタをまとめていたブログ。カテゴリにこだわらず更新していこうかと思います。

ファイル名を連番に変更する方法(CentOS, Mac)

やりたいこと

複数のファイルのファイル名を連番に変更する。

> ls
test1.png test4.png test5.png test10.png

上記を下記のようにする。

> ls
test001.png test002.png test003.png test004.png

方法

以下のコマンドで変更前後を確認

> ls *.csv | awk '{ printf "mv %s test%03d.png\n", $0, NR }'
mv test1.png test001.png
mv test4.png test002.png
mv test5.png test003.png
mv test10.png test004.png

問題なければ次のように、パイプを使って実行

> ls *.csv | awk '{ printf "mv %s test%03d.png\n", $0, NR }' | sh

また、printfの部分を変更することで柔軟な連番付けが可能となる。

## 連番を1000番台にする
> ls *.csv | awk '{ printf "mv %s test%03.2f.png\n", $0, NR+1000.03 }'
mv test1.png test1001.03.png
mv test4.png test1002.03.png
...
## 偶数の連番にする
> ls *.csv | awk '{ printf "mv %s test%03d.png\n", $0, NR+NR }'
mv test1.png test002.png
mv test4.png test004.png
...
## 奇数の連番にする
> ls *.csv | awk '{ printf "mv %s test%03d.png\n", $0, NR+NR-1 }'
mv test1.png test001.png
mv test4.png test003.png
...