ubuntu/mint rename コマンドは、perlなので超便利。初心者こそ試してみるべき。

一括でファイル名を正規表現(PCRE)で変更したい

以前はこのRename(Perl/CPAN)が標準だった気がするのですが、現在のディストリビューションはGNUユーティリティがデフォルトではいっているケースが増えたような気がします。ですから、以下の記述はあくまでPerlで作られたRenameコマンドです。導入しないと使えません。

  • ファイル名置換には正規表現が使いたい。
  • エレガントに処理したい。(=楽したい)

その答えがrenameコマンドです。
シェルの達人は、mv使うとか、for で処理するとか。それはおいておきましょう。いまどきエレガントと言えるかどうかは別として。議論はしません。

さて、abc.txt AAAabc.txt があったとして、

$ rename "s/abc/あいう/" *.txt


とすれば、2つのファイル名abc部分があいうに置換されます。
肝は、「強力なperlの正規表現」が使えるということです。これは美味しいです。覚えておいて損はありません。

使いこなしのためにというよりむしろ泣かないために:


rename -v で成功結果を表示

rename -n では実際には置換しない。失敗しないためにはこれを覚えておきましょう。

-fでは同一名称でも強制的に既存ファイルを上書きします。

man rename でも確認できます。実態は、perlのスクリプト。

たとえば

[20150106]全角半角ESC入れ替える(0105 Ver.).desktop3

というファイルがありました。

$ rename -n "s/\[.*?\]//" *.desk*3
[20150106]全角半角ESC入れ替える(0105 Ver.).desktop3 renamed as 全角半角ESC入れ替える(0105 Ver.).desktop3

というように、ファイル頭の[2015うにゃ]が削除されていることがわかると思います。

rename -n 's/(\[.*?\])(.*?)(ESC)(.*?)/$3$2/' *.desk*3
renamed as ESC全角半角入れ替える(0105 Ver.).desktop3

となりますね。
というふうに、perlの基礎で対応できますから、便利です。
シェルはzshを使っています。bashとたまに動きが違います。

CPAN File-Rename

Namida Zone :: 神々は細部に宿る――涙とともに、夜な夜なパンをかじった。

Grub2をめぐるあれこれ。テーマ、背景、フォント。それが Cute Grub 計画

No Copyright Girl / ノーコピーライトガール Grubと戯れるという意味のない日常:: Cute Grub 計画 コンピューターの電源オン後、 OS オペレーティングシステムを起動するためのブートローダーが先ず動きだす――ほぼすべてのLinux...