文件的顺序由可以嵌入文件名中的数字确定,但有时在文件名的开头,例如 file1.txt file2.txt file3.txt file10.txt file11.txt 等等.. 要么 1.txt 2.txt 10.txt等。
重命名应产生类似...的名称 file01.txt file02.txt file03.txt file10.txt 等等...
重要的是file1.txt将是file01.txt,而不是file10.txt是file01.txt。
我认为文件名必须在重命名之前进行格式化。我不知道如何在命令行上执行此操作,也许它必须通过脚本来完成,但我希望不是。
应该给命令以最终名称中应该包含的位数。如果可以使用格式字符串,我们也可以给出我们拥有数字的位置。
答案 0 :(得分:2)
使用perl rename
实用程序:
rename -n 's/\d+/sprintf("%02d", $&)/e' *.txt
结果将是:
$ ls
file10.txt file1.txt file2.txt file3.txt
$ rename -n 's/\d+/sprintf("%02d", $&)/e' *.txt
rename(file1.txt, file01.txt)
rename(file2.txt, file02.txt)
rename(file3.txt, file03.txt)
如果看起来不错,请删除-n
空运行标志。
请注意,sprintf
的格式字符串确定了零填充的“宽度”,因此,如果要处理的文件名变成三位数,则需要将其更改为{{1 }}等。
"%03d"