我有很多pdf文件我想用/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
的输入吗?
谢谢你的帮助!
这对我来说很好:
rename 's/(+{1,5}) (.*) ((.*) ([0-9]{4})).pdf/$3, $4 $1 $2.pdf/' --
'Dude, 1999 +++ The discovery of some very interesting stuff.pdf'
…然而,你的问题没有引用错误信息,所以很难判断在你的情况下什么可能是错误的。
作为一个警告,在Linux系统上有两个不同版本的/usr/bin/rename
,它们具有不同的语法。但是,我假设您使用的是Perl命令,因为您的原始命令可以正常工作。这意味着您可以使用任何Perl表达式来修改名称—有关详细信息,请参阅perlre。
不幸的是,Fedora(我的发行版)有一个毫无价值的rename版本。
但是我已经为perl版本的replace实用程序更改了它。
你可以在CPAN找到它获取并解压缩存档文件,然后:
# ./Build installdeps
# sudo ./Build install
! !它取代了原来的fedora rename: bin文件和manual,但是它可以通过yum install恢复,并且可能在下次fedora更新时恢复