Macでディレクトリ以下にあるファイル名を再帰的に変更



Macでファイル名一括置き換え

LinuxとHomebrewではrenameというコマンドがある模様ですが、
私が使っているのはmacportsなのでrenameコマンドは直接はありませんでした。

しょうがないのでfindとxargsを使ってファイル名を変更することに

こんな感じのファイル構成


image/
- 1
- thum_xxxxx.jpg
- thum2_xxxxx.jpg
- thum_aaaaa.jpg
- thum2_aaaaa.jpg
- 2
- thum_yyyyyy.jpg
- thum2_yyyyyy.jpg
- 3
- thum_zzzzzz.jpg
- thum2_zzzzzz.jpg

画像を入れるディレクトリにサムネイルが二種類存在して、
1. thum_xxxx.jpg
2. thum2_xxxx.jpg

thum2_xxxx.jpg を thum_xxxx.jpgに変更したいと言うのが始まり

とりあえずthum_xxxx.jpgをディレクトリを再帰的に探して消す

$ find ./image/ -type f | xargs rm

これで各ディレクトリのthum_xxxx.jpgが消える

ファイル名を置き換える

次にthum2_xxx -> thum_xxxに置き換える作業、
間にsedコマンドでファイル名を変更するのがみそらしい

$ find . -type f | sed 'p;s/thum2_/thum_/' | xargs -n2 mv

image
- 1
- thum_xxxxx.jpg
- thum_aaaaa.jpg
- 2
- thum_yyyyyy.jpg
- 3
- thum_zzzzzz.jpg

こんな感じになっていればok