重命名文件和目录

重命名文件和目录

我有大量的文件影片和目录,其命名结构如下: 电影名称(作者、年份) 或者 电影名称(作者,年份) LANG

我打算以这种方式重命名它们(近三千个)

作者 - 电影名称 - 年份 - LANG

或者与此非常相似的东西。

我的问题是:有没有办法用简单的脚本进行批量重命名?

提前感谢大家。

答案1

虽然您可以使用基于 perl 的rename工具中的正则表达式捕获组来执行此操作,但我的选择可能是mmvex。

$ mmv -n '* (*, *) *' '#2 - #1 - #3 - #4'
Name of the film (Author, year) LANG -> Author - Name of the film - year - LANG

带有和不带有组件的情况LANG最容易分开处理 - 对于后一种情况,您可以将命令简化为

mmv -n '* (*, *)' '#2 - #1 - #3'

zsh使用contrib 模块也可以实现类似的事情zmv

 % zmv -n '(*) \((*), (*)\) (*)' '$2 - $1 - $3 - $4'
mv -- 'Name of the film (Author, year) LANG' 'Author - Name of the film - year - LANG'

-n当您对转换正确性感到满意时,请删除(一个明显的陷阱是 if Name of the filmever 包含括号)。

答案2

  • steeldriver 提供的第一个解决方案非常完美。在某些情况下,必须进行一些小改动,因为有些电影名称没有关联的 LANG。
  • 顺便问一下,如何在递归模式下完成此操作?我在 mmv 文档中没有找到该选项。

我对自己说。经过一些互联网搜索和一些测试,我可以设法更改文件夹中包含的文件。; 用于指示系统(不带 -r)深入文件夹。但; 将成为第一个变量,因此顺序将如下所示:

mmv';*(*,)。''#1#3 - #2 (#4).#5'

在这种情况下,#1 对应于;其余的是名称更改的一部分。

所以,非常感谢steeldriver教我一个新而强大的工具来轻松批量重命名。也感谢Elia Kagan的评论。

相关内容