perl - 零垫重命名,例如图片 (2).jpg -> 图片 (002).jpg

标签 perl bash

我需要重命名所有子文件夹中的所有图像,如标题所述。我正在考虑用正则表达式提取括号内的数字,然后重命名它。四处搜索,我看到有 renamemmv 之类的工具,但我无法让它们重命名 jpg。

对于解决我的问题的任何建议,我将不胜感激。

顺便说一句:适用于 Windows,我有 cygwin bash 和 perl。

编辑:
试验所有答案后的结论。

  1. Cygwin rename 不好,我可以开始工作的那个不接受正则表达式,但绝对是一个不错的选择,例如通过运行 Linux VM 并安装 Win SharedFolder。
  2. 您可以使用 this shell script 为 Cygwin 构建更好的重命名 工具|使用 sed
  3. pwd 的 Windows 等价物就是 cd
  4. Hugmeir 发布了一个使用 Perl 5.13+ 的有前途的解决方案,这是开发版本,但是当您阅读这篇文章时,它可能已经稳定了。
  5. pad_left sub 可能不是 printf 语法的更好替代品,但它确实有效。

最佳答案

rename 命令可以做到这一点:

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

带有子目录:

find . -type f -name \*.jpg -print0|xargs -0 rename 's/\d+/sprintf("%03d",$&)/e'

关于perl - 零垫重命名,例如图片 (2).jpg -> 图片 (002).jpg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4561576/

相关文章:

perl - 无法使用 perl IO::Socket::SSL 完成与 gateway.push.apple.com 的 SSL 握手

linux - 如何格式化程序集注释

mysql - 将 HTML 上传到数据库 - PERL

linux - 在子目录中的文件上执行程序

windows - 在打开 Emacs 时自定义窗口

arrays - 如何将数组或列表转换为 hashref?

perl - 如何在 Perl 中将多行获取到单个变量?

c++ - OpenGL系统监视器

python - 移动包含旧文件的目录的简单方法

bash - 在 Bash 中获取配置文件的最佳实践