2024/8/18

正規表現を使ったファイルの一括リネーム

こんにちは、kiwiです。

Macである規則に従って生成されているファイルに対して、一括で正規表現を使ってファイル名を変更する機会があったので、備忘録的に記録します。

MacのFinderアプリには標準でファイル名の一括変更機能がついており、簡単なリネームであればこれで事足りるのですが、複雑なファイル名の置換を行いたい場合に活用できると思います。

コマンド

IMG_0001.jpeg という形式のファイル名を、 0001.jpg というファイル名に一括で変換する例です。元のファイル名の数字部分を残しつつ、不要な部分の削除や拡張子の変更を行なっています。

find . -name "*.jpeg" > files.txt                                           
sed -E 's/\.\/IMG_([0-9]+)\.jpeg$/& \1.jpg/' files.txt > files2.txt
cat files2.txt | xargs -n2 zsh -c 'mv $0 $1'
  • findでファイル名の一覧を生成
  • sedを使い、元のファイル名とリネーム後のファイル名を並べた一覧を生成
  • その内容をxargsに渡してコマンドを実行

という感じで動きます。

xargsの実行コマンドはzshとなっていますが、bash等でも動きます。-cコマンドは後ろに続く文字列をevalして実行するため、2つ受け取った引数を順に当てはめてmvを実行します。

参考

xargsでサクッと書く
https://qiita.com/knknkn1162/items/806604341508d32b160e

Share with Hatena Bookmark

関連記事