Linux 重命名文件夹中名称为 ab1.jpg、ab2.jpg、ab10.jpg 等的文件
Linux Renaming files in a folder where the names is ab1.jpg, ab2.jpg, ab10.jpg etc
文件的顺序由一个数字决定,该数字可以嵌入文件名中,但有时在名称的开头,例如
file1.txt
file2.txt
file3.txt
file10.txt
file11.txt
ETC..
或者
1.txt
2.txt
10.txt 等..
重命名的结果应该是...
文件 01.txt
文件 02.txt
file03.txt
file10.txt
等...
重要的是 file1.txt 将成为 file01.txt 而不是 file10.txt 成为 file01.txt.
我认为文件名必须在重命名前格式化。我不知道如何在命令行上执行此操作,也许它必须通过脚本来完成,但我希望不会。
该命令应给出最终名称中应包含的位数。如果可以使用格式化字符串,我们也可以给出数字所在的位置。
使用 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
dry-运行 标志。
请注意 sprintf
的格式字符串决定了零填充的 "width",因此如果您处理的文件名达到三位数,您需要更改它到 "%03d"
,等等..
$ ls
file100.txt file10.txt file1.txt file2.txt file3.txt
$ rename -n 's/\d+/sprintf("%03d", $&)/e' *.txt
rename(file10.txt, file010.txt)
rename(file1.txt, file001.txt)
rename(file2.txt, file002.txt)
rename(file3.txt, file003.txt)
文件的顺序由一个数字决定,该数字可以嵌入文件名中,但有时在名称的开头,例如 file1.txt file2.txt file3.txt file10.txt file11.txt ETC.. 或者 1.txt 2.txt 10.txt 等..
重命名的结果应该是... 文件 01.txt 文件 02.txt file03.txt file10.txt 等...
重要的是 file1.txt 将成为 file01.txt 而不是 file10.txt 成为 file01.txt.
我认为文件名必须在重命名前格式化。我不知道如何在命令行上执行此操作,也许它必须通过脚本来完成,但我希望不会。
该命令应给出最终名称中应包含的位数。如果可以使用格式化字符串,我们也可以给出数字所在的位置。
使用 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
dry-运行 标志。
请注意 sprintf
的格式字符串决定了零填充的 "width",因此如果您处理的文件名达到三位数,您需要更改它到 "%03d"
,等等..
$ ls
file100.txt file10.txt file1.txt file2.txt file3.txt
$ rename -n 's/\d+/sprintf("%03d", $&)/e' *.txt
rename(file10.txt, file010.txt)
rename(file1.txt, file001.txt)
rename(file2.txt, file002.txt)
rename(file3.txt, file003.txt)