[macOS]Bashでファイル名を一括変換する

開発メモです。大量のファイル名を一括で変換する必要がでてきたので、方法を調べてみました。
今回はmacOSでの解説になります。
実行環境は次の通りです。

  • macOS Catalina 10.15.4

renameするファイル

こんな構造のファイルがあるとします。

$ tree .
.
└── dic
    ├── bb_1.txt
    └── bb_2.txt

dicディレクトリ以下のbb_1.txtbb_2.txtbbaaに変えていきたいと思います。

renameコマンドを使う方法

renameコマンドを使ってリネームしてみます。
macにはLinuxのrenameコマンドはないので、brewでまずインスールします。

$ brew install rename

あとはfindでリネーム対象のファイルを検索して変換します。

$ find dic -name "*bb*" | xargs rename -s bb aa

mvコマンドを使う方法

renameコマンドを使わなくてもmvコマンドでfor文を回せばリネームはできます。

$ for f in dic/bb* ; do ; mv $f ${f/bb/aa} ; done

まとめ

renameコマンド、mvコマンドどちらでも結果はこうなるはずです。

$ tree .
.
└── dic
    ├── aa_1.txt
    └── aa_2.txt

renameコマンド、mvコマンドでファイル名一括変換する方法を紹介しました。
参考になれば幸いです。

参考