我的 Ubuntu 服务器上存储了一些电视节目,我可以将它们全部重命名,以便 Kodi 可以识别它们,除了一个:
第一集,第一季:
Name - S01E001 - Title part1
Name - S01E001 - Title part2
Name - S01E001 - Title part3
第二季第一集:
Name - S02E020 - Title part1
Name - S02E020 - Title part2
Name - S02E020 - Title part3
所以Kodi认为第二个视频是S02E20,但实际上是S02E01。重命名后这六个文件应该是:
第一集,第一季:
Name - S01E001.1 - Title
Name - S01E001.2 - Title
Name - S01E001.3 - Title
第二季第一集:
Name - S02E001.1 - Title
Name - S02E001.2 - Title
Name - S02E001.3 - Title
我知道,这里有很多相关的问题,但没有一个符合这种模式,几乎没有人解释他的解决方案。的联机帮助页对rename
我没有帮助
答案1
正则表达式匹配/^(.*) - (.*) - (.*) part([0-9]+)/
将名称、剧集指示符、标题和零件编号分组,然后您可以在替换文本中使用$1
它们$4
。
rename 's/^(.*) - (.*) - (.*) part([0-9]+)/$1 - $2.$4 - $3/' *
该part1
部分之后的任何内容(例如文件扩展名)都保持不变。
如果要修改捕获组,请e
在表达式末尾使用修饰符s/…/…/
。在 中,该部分是 Perl 表达式,而不是带有变量插值的字符串。在 Perl 表达式中,使用运算符连接字符串。例如,如果您想从零件号中减去 1:s/REGEX/REPLACEMENT/e
REPLACEMENT
.
rename 's/^(.*) - (.*) - (.*) part([0-9]+)/"$1 - $2." . ($4-1) . " - $3"/e' *