可能重复: Renaming lots of files in Linux according to a pattern
我有这种格式的多个文件:
file_1.pdf
file_2.pdf
...
file_100.pdf我的问题是如何重命名所有文件,如下所示:
file_001.pdf
file_002.pdf
...
file_100.pdf我知道您可以用“重命名”重命名多个文件,但在本例中我不知道如何进行重命名。
发布于 2013-01-14 22:07:49
您可以使用Perl工具rename从shell提示符执行此操作。(还有其他同名的工具可能或可能无法做到这一点,所以要小心。)
rename 's/(\d+)/sprintf("%03d", $1)/e' *.pdf如果您想进行一次试运行以确保不关闭任何文件,请将-n开关添加到命令中。
备注
如果运行以下命令(linux)
$ file $(readlink -f $(type -p rename))你的结果就像
.../rename: Perl script, ASCII text executable那么这似乎是正确的工具=)
这似乎是Ubuntu上的默认Ubuntu命令。
为了使它成为Debian和类似于Ubuntu这样的衍生工具的缺省值:
sudo update-alternatives --set rename /path/to/rename解释
s///是基替换表达式:s/to_replace/replaced/,请检查perldoc perlre(\d+)捕获至少有一个整数:\d或更多:$1中的+sprintf("%03d", $1) sprintf类似于printf,但不用于打印,而是用相同的语法格式化字符串。%03d用于零填充,而$1是捕获的字符串。检查perldoc -f sprintfe修饰符而得到的。https://stackoverflow.com/questions/14327613
复制相似问题