![使用正则表达式重命名文件时 Perl 重命名挂起](https://linux22.com/image/117666/%E4%BD%BF%E7%94%A8%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E9%87%8D%E5%91%BD%E5%90%8D%E6%96%87%E4%BB%B6%E6%97%B6%20Perl%20%E9%87%8D%E5%91%BD%E5%90%8D%E6%8C%82%E8%B5%B7.png)
我正在尝试perl-rename
在 Arch Linux 上根据正则表达式重命名许多文件。我的文件夹中有大量遵循以下格式的文件:
Title of File [Year] - quality.filetype
其中“年份”为 4 位数字,质量可以是 720p、1080p、DVD 等中的任意一种,文件类型可以是 mp4、mkv 等中的任意一种。
我正在尝试重命名文件以遵循以下格式:
[Year] Title of File (quality).filetype
我开发了这个正则表达式来匹配文件的相关部分:
/(.+) \[(\d{4})\](?: - (.+)\.+)*/
经过一些研究后,我开发了这个命令来尝试重命名(-n
一旦我知道它会起作用,我就会将其删除):
perl-rename -n 's/(.+) \[(\d{4})\](?: - (.+)\.+)*/[$2] $1 ($3)./'
当我运行此命令时,perl-rename 不输出任何内容并且不退出。谁能帮我找出错误吗?
答案1
我没有指定要重命名哪些文件。在命令末尾添加了一个星号:
perl-rename -n 's/(.+) \[(\d{4})\](?: - (.+)\.+)*/[$2] $1 ($3)./' *
此外,我引用捕获组的方式是不正确的。引用捕获组的方式类似于\1
,\2
等,而不是$1
,$2
等。工作表达式如下所示:
perl-rename -n 's/(.+) \[(\d{4})\](?: - (.+)\.+)*/[\2] \1 (\3)./' *