Linux 重命名并替换

Linux 重命名并替换

有一个名为文件机器人您可以在其中输入目录,然后从那里选择要匹配的数据库。最终结果是干净地重命名并且通常是媒体服务器认可的格式。

我的目标是只从 bash 运行它而不涉及第三方,无论准确性如何。

我能够使用重命名来删除 XXX 并替换为,但最终我被困在 .... 或 ... 或其他一些变体(空格、括号等...)。是否可以作为一个重命名运行,还是需要分离重命名实例来清理我的问题?

我知道反映的代码仅处于测试模式,因为我不想在不确定的情况下重命名任何东西。

请不要剧透答案,而要给出提示。如果有必要,我很乐意进一步挖掘,只是我不想得到最终答案。

find . -mindepth 1 -name "*.*" -exec rename -n 's/"  "|"-YTS.LT|YTS.LT|1080p|720p|BRrip|BluRay|x264|AAC|WEBRip|YTS.AG|YTS.MX|YTS.AM|Deceit|-|BOKUTOX|YIFY|BrRip|\[|]//ig' {} \;

初始运行后的示例输出

rename(./Dick Tracy (1990) [BluRay] [720p] [YTS.LT]/Dick.Tracy.1990.720p.BluRay.x264-[YTS.LT].mp4, ./Dick Tracy (1990)   /Dick.Tracy.1990....mp4)
``

答案1

您可以扩展每个名称匹配的搜索模式,以?在不必要的点/括号和空格上包含可选匹配(术语之后)。尝试在一对|分隔符内使用此模式格式:

[\[ \.-]+?(720p|BluRay)\]?

添加+以发现双倍空格,并YTS\...匹配任何格式YTS.加上 2 个字符。

将它们放在您现有的表达中将有助于您进行下一步,即清理其他术语和过滤器:

find . -mindepth 1 -name "*.*" -exec rename -n 's/"  "|"|  +|[\[ \.-]+?(YTS\...|720p|BluRay|x264)\]?|-//ig'

rename(Dick Tracy (1990)  [BluRay] [720p] [YTS.LT]/Dick.Tracy.1990.720p.BluRay.x264-[YTS.LT].mp4, Dick Tracy (1990)/Dick.Tracy.1990.mp4)

查看实用信息常用表达

相关内容