【シェル】renameでファイル名を一括変更【macOS】

【シェル】renameでファイル名を一括変更【macOS】

macOSでは、ファイル名を一括変換したいときにFinderの機能を使って実現可能です。ですが私の場合、最近はFinderよりもターミナルを使うほうが何かと多く、ターミナルでのファイル名を一括で変更したいケースが出てきました。

そこで見つけたのが rename コマンドです。 rename コマンドは2種類あるようですので注意してください。ここではbrewでインストールする rename コマンドを解説していきます。

renameコマンドをインストール

brewを使って rename をmacOSへインストールします。

$ brew install rename

renameコマンドの使い方の解説

rename コマンドは、次のような形で正規表現でマッチさせ一括置換できます。

$ rename 's/マッチさせる文字/変換する文字/' ファイル群

テスト用のファイルを作成

いきなり本番で実行してしまうと致命的な損失になりかねないので、次のようなテストファイルを作成して実験してみましょう。

$ touch hoge.txt fuga.txt
$ ls
fuga.txt	hoge.txt

ファイル名に接頭辞を追加する

ファイル名に接頭辞(prefix)を追加します。

$ rename 's/^/test_/' *.txt
$ ls
test_fuga.txt	test_hoge.txt

ファイル名の接頭辞を削除する

ファイル名の接頭辞を削除します。

$ rename 's/^test_//' *.txt
$ ls
fuga.txt	hoge.txt

ファイル名に接尾辞を追加する

ファイル名に接尾辞 (suffix) を追加します。

$ rename 's/.txt/_test.txt/' *.txt
$ ls
fuga_test.txt	hoge_test.txt

このように、マッチング演算子は使わずにカンタンに考えるとラクです。

拡張子を一括変更

$ rename 's/.jpeg/.jpg/' *.jpeg
記事に関するご質問などがあれば、
Twitter または お問い合わせ までご連絡ください。
関連記事