Bruce 的玩具間

my works and notes on ruby, rails, git, ubuntu linux, mac os x, etc...

ubuntu linux用rename指令批次改檔名

| Comments

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的,有一些細節可能不太一樣。

Comments

comments powered by Disqus