我需要重命名所有子文件夹中的所有图像,如标题所述。我正在考虑用正则表达式提取括号内的数字,然后重命名它。四处搜索,我看到有 rename
和 mmv
之类的工具,但我无法让它们重命名 jpg。
对于解决我的问题的任何建议,我将不胜感激。
顺便说一句:适用于 Windows,我有 cygwin bash 和 perl。
编辑:
试验所有答案后的结论。
- Cygwin
rename
不好,我可以开始工作的那个不接受正则表达式,但绝对是一个不错的选择,例如通过运行 Linux VM 并安装 Win SharedFolder。 - 您可以使用 this shell script 为 Cygwin 构建更好的
重命名
工具|使用sed
。 pwd
的 Windows 等价物就是cd
。- Hugmeir 发布了一个使用 Perl 5.13+ 的有前途的解决方案,这是开发版本,但是当您阅读这篇文章时,它可能已经稳定了。
- 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/