ubuntu上好像比較少批次改檔名軟體,不過其實有一個可以用正規式改檔名的指令,某個層面來說是超級方便的工具。

如果你熟悉Perl的Regular Expression(正規表達式),這個工具對你來說可能理所當然。不幸的是,我雖然會一點正規表達式,但完全沒碰過Perl,好在看到一篇國外的文章有稍微講細一點,不然man rename我也整個看不懂。所以這篇文章是寫給看過man rename但還整個搞不懂他的perlexpr參數的人:

語法:

	rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]

-n 是把模擬的結果印在螢幕上,不實際改檔名 -v 是改檔名同時把結果印在螢幕上 -f 是當檔名重複時強制覆蓋 perlexpr 是perl的正規表達式,下面再解釋 files 是要被改的檔案,可以使用星號*與?

範例: # 把出現在檔名內任何地方的「全金屬狂潮」都改成「驚爆危機」,時常用到的功能,你懂的 rename ‘s/(全金屬狂潮)/驚爆危機/’ * # 把英文統一改成小寫 rename ‘y/A-Z/a-z/’ * # 把檔案名稱結尾的.bak刪掉,這是man rename的範例 rename ‘s/.bak$//’ *.bak

因此perlexpr其實是這樣的:

‘s/舊檔名的正規式/新檔名的正規式/’

那個s是取代(substitute)的意思 至於y…因為我也找不到資料,會perl的大大歡迎提供資訊

然後! 給不會正規式的網友們:

  1. Google it
  2. Rubular Lvie玩RegExp,不過這是for Ruby的,有一些細節可能不太一樣。