使用正则表达式重命名文件时 Perl 重命名挂起

使用正则表达式重命名文件时 Perl 重命名挂起

我正在尝试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)./' *

相关内容