Linux重命名文件夹名为ab1.jpg,ab2.jpg,ab10.jpg等的文件

时间:2019-01-20 15:08:22

标签: linux bash batch-rename

文件的顺序由可以嵌入文件名中的数字确定,但有时在文件名的开头,例如 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。

我认为文件名必须在重命名之前进行格式化。我不知道如何在命令行上执行此操作,也许它必须通过脚本来完成,但我希望不是。

应该给命令以最终名称中应该包含的位数。如果可以使用格式字符串,我们也可以给出我们拥有数字的位置。

1 个答案:

答案 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"