【问题标题】:Rename multiple files with /usr/bin/rename using regex使用正则表达式使用 /usr/bin/rename 重命名多个文件
【发布时间】:2011-12-09 08:55:48
【问题描述】:

我有很多要重命名为 /usr/bin/rename 的 pdf。

文件按以下模式命名:

<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 的输入?

感谢您的帮助!

【问题讨论】:

    标签: regex linux bash rename


    【解决方案1】:

    这对我来说很好用:

    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

    【讨论】:

      【解决方案2】:

      不幸的是 Fedora(它是我的发行版)的重命名版本毫无价值。

      但我已将其更改为 perl 版本的替换实用程序。

      你可以在CPAN找到它 获取并解压缩存档,然后:

      # ./Build installdeps
      # sudo ./Build install
      

      !!!它的动作取代了原来的 Fedora 重命名:bin 文件和手册,但它可以通过 yum reinstall 恢复,并且可能在下一次 fedora 更新时恢复 您也可以单独安装或使用替代方案。

      【讨论】:

      • 这不是仅链接的答案-他提供了一个可以下载的地方,但他在答案的文本中对此进行了解释。措辞不是特别清晰或有帮助,但称其为仅链接答案是不公平的。
      猜你喜欢
      • 2019-06-12
      • 1970-01-01
      • 2017-08-24
      • 2011-09-14
      • 2017-08-10
      • 2017-06-18
      • 2021-11-04
      相关资源
      最近更新 更多