2011-10-17 73 views
2

我有很多pdf,我想用/usr/bin/rename重命名。使用正則表達式重命名多個文件/ usr/bin/rename

文件被命名爲按以下模式:

<rating> <a pretty long title> (<author> <year>).pdf 
e.g.: +++ The discovery of some very interesting stuff (Dude 1999).pdf 

rating: 1 to 5 '+' signs 
year: numerical 

他們應該被重命名爲以下模式:

<author>, <year> <rating> <a pretty long title>.pdf 
e.g.: Dude, 1999 +++ The discovery of some very interesting stuff.pdf 

我試圖用/usr/bin/rename寫了這樣的命令:

rename 's/(.*)\ (.*)\ \((.*)\ (.*)\).pdf/$3, $4 $1 $2.pdf/' *.pdf 

但是,該命令並不認爲評級等級方式包含'+'符號,並且年份總是數字。我怎樣才能做到這一點?我嘗試了類似([+]{1,5})([0-9]{4}),但它沒有奏效。

rename居然能夠解釋比(.*)其他東西作爲輸入的變量$1 ... $n

感謝您的幫助!

回答

4

也能正常工作對我來說:

rename 's/(\+{1,5}) (.*) \((.*) ([0-9]{4})\).pdf/$3, $4 $1 $2.pdf/' -- \ 
    'Dude, 1999 +++ The discovery of some very interesting stuff.pdf' 

...但是你的問題不引用錯誤信息,所以很難說什麼可能是錯在你的情況。

就像一個警告一樣,有兩個不同版本的/usr/bin/rename,這些版本在Linux系統上廣泛存在,並且有不同的語法。不過,我認爲你使用的是Perl,因爲你的原始命令可以工作。這意味着您可以使用任何Perl表達式來修改名稱 - 有關更多詳細信息,請參見perlre

0

不幸的是,Fedora(這是我的發行版)沒有一個毫無價值的重命名版本。

但我已經改變了pe​​rl版本的替換工具。

您可以在CPAN找到 get和解壓壓縮文件,然後:

# ./Build installdeps 
# sudo ./Build install 

!它的行動取代原來的Fedora重命名:bin文件和手動,但它可以通過yum重新安裝恢復,並可以在下次Fedora更新 恢復。也可以單獨安裝或使用替代品。

+2

這不是一個只有鏈接的答案 - 他給了一個地方,你可以去下載它,但他在他的答案文中解釋了它。措辭不是特別清楚或有幫助,但將此稱爲僅鏈接答案並不公平。 –

相關問題