使用regex重命名多个文件/usr/bin/rename



我有很多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更新时恢复

最新更新