使用数字填充重命名文件

・2 分钟阅读

 $ perl -e 'for (@ARGV) { $o = $_; s/d+/sprintf("%04d", $&)/e; print qq{mv "$o" "$_"n}}'

说明

基本上是一行perl脚本,指定要重命名为命令行参数的文件,例如:


perl -e '.....' file1.jpg file2.jpg

在本例中,文件将分别重命名为file0001.jpgfile0002.jpg ,脚本不实际重命名任何内容,它只打印要执行的shell命令,执行重命名,这样你可以先检查脚本会做什么,如果你想真正做到这一点,然后将输出管道输出到sh:


perl -e '.....' file1.jpg file2.jpg | sh

liner perl脚本中发生了什么:

  • for (@ARGV) { ... } 是循环,其中每个命令行参数都被替换为自动变量$_
  • $o =$_ ::保存原始文件名
  • s/// ::在$_上执行模式匹配和替换
  • print qq{...} ::打印mv命令,带有正确的引用参数,

限制

该脚本未涵盖所有角落案例。例如,它不能处理名称为双引号的文件,在任何情况下,在将脚本输出到sh之前先检查脚本的输出是安全的。

如果系统有rename命令(Linux ),那么执行完全相同的操作的快捷方式是:


rename 's/d+/sprintf("%04d", $&)/e' *.jpg

它也能更好地处理特殊字符。

Hujiuxiang profile image