![](/img/trans.png)
[英]Renaming files like 20141207_190822.jpg to “2014-12-07 19.08.22.jpg” in linux or MacOS X
[英]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等。或1.txt 2 .txt 10.txt等。
重命名的名稱應類似於... file01.txt file02.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-run標志。
請注意, sprintf
的格式字符串確定了零填充的“寬度”,因此,如果要處理的文件名變為三位數,則需要將其更改為"%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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.