Macでファイル名の一括置換

MacでのTerminalからの置換メモ。

Macではデフォルトで、renameコマンドが使えないので、findとsedで行う。

とっても参考になったサイト:

findとsedを利用した一行野郎のファイル名変換 - Web就活日記

現在いるディレクトリ内の置換

文字列hogehogeを含むファイル及びディレクトリの中から、ogehooogehooに置換するコマンド。

find . -maxdepth 1 -name "*hogehoge*" | sed -e 's/\(\(.*\)ogeho\(.*\)\)/mv \1 \2OgehO\3/g' | sh

*hogehoge*の部分は検索したい文字列に変更する。ワイルドカードが利用できる。

置換が正しく行われるか不安な場合は以下のコマンドで、置換前と置換後の名前を表示できる。

find . -maxdepth 1 -name "*hogehoge*" | sed -e 's/\(\(.*\)ogeho\(.*\)\)/mv \1 \2OgehO\3/g' 

現在いるディレクトリ以下の置換

findのオプション-maxdepthを省く以外は同じである。

置換コマンド

find . -name "*hogehoge*" | sed -e 's/\(\(.*\)ogeho\(.*\)\)/mv \1 \2OgehO\3/g' | sh

置換確認用のコマンド

find . -name "*hogehoge*" | sed -e 's/\(\(.*\)ogeho\(.*\)\)/mv \1 \2OgehO\3/g'