我有很多 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了解更多详情。
关于regex - 使用正则表达式通过/usr/bin/rename 重命名多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7795400/