根据正则表达式捕获批量重命名

根据正则表达式捕获批量重命名

请原谅我研究不足,但我只是不熟悉那里的所有工具。

我想批量重命名如下的文件列表

some_name_n1_51000
some_name_n2_51000
some_name_n3_51000
...

应该实际命名

some_name_n51000_1
some_name_n51000_2
some_name_n51000_3
...

即 51000 和序列号应该交换位置。

以下内容在 Debian 上使用 perlrename脚本(称为prename)进行操作:

prename -nv 's/some_name_n(\d{1,2})_51000/some_name_n51000_$1' *

请注意,这-v会给出详细输出,这-n意味着它会进行试运行。最后*是文件选择器。

最初没有奏效的原因:

  • 我使用renameperl 脚本代替prename
  • 我忘记捕获括号之间的正则表达式组,然后将其存储在变量中$1$2$3表示第二组和第三组,依此类推)。

可以改进的地方:

  • 在 Debian stretch 上,这给了我一个弃用警告

    正在使用的弃用程序:Debian perl 软件包附带的 rename 将在 stretch 发布后被删除。请安装单独的“rename”软件包,它将提供相同的命令。

rename但是,该包接受略有不同的命令。

相关内容