请原谅我研究不足,但我只是不熟悉那里的所有工具。
我想批量重命名如下的文件列表
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
意味着它会进行试运行。最后*
是文件选择器。
最初没有奏效的原因:
- 我使用
rename
perl 脚本代替prename
。 - 我忘记捕获括号之间的正则表达式组,然后将其存储在变量中
$1
($2
,$3
表示第二组和第三组,依此类推)。
可以改进的地方:
在 Debian stretch 上,这给了我一个弃用警告
正在使用的弃用程序:Debian perl 软件包附带的 rename 将在 stretch 发布后被删除。请安装单独的“rename”软件包,它将提供相同的命令。
rename
但是,该包接受略有不同的命令。