<分区>
Possible Duplicate:
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
我知道您可以使用“重命名”重命名多个文件,但我不知道在这种情况下该怎么做。
<分区>
Possible Duplicate:
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
我知道您可以使用“重命名”重命名多个文件,但我不知道在这种情况下该怎么做。
最佳答案
您可以使用 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
上的默认 rename
命令。
要使其成为 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 sprintf
e
修饰符,允许使用后面的 perl 函数关于perl - 从命令行重命名多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14327613/