Sim*_*ier 3 bash perl rename file-rename
可能重复:
根据模式在Linux中重命名大量文件
我有这种格式的多个文件:
file_1.pdf
file_2.pdf
...
file_100.pdf
我的问题是如何重命名所有文件,如下所示:
file_001.pdf
file_002.pdf
...
file_100.pdf
我知道你可以用'rename'重命名多个文件,但在这种情况下我不知道怎么做.
Gil*_*not 13
您可以使用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
那么这似乎是正确的工具=)
这似乎是默认rename命令Ubuntu.
要使它成为默认值Debian并衍生出来Ubuntu:
sudo update-alternatives --set rename /path/to/rename
s///是基本替换表达式:s/to_replace/replaced/,检查perldoc perlre(\d+)使用()至少一个整数捕获:\d或更多:+in$1sprintf("%03d", $1) sprintf是像printf的,但不是用来打印,但要格式化具有相同语法的字符串.%03d用于零填充,并且$1是捕获的字符串.校验perldoc -f sprintfe