某些圖片會是 1.jpg, 2.jpg, 10.jpg, 11.jpg, 100.jpg... 等, 使用看圖軟體看時, 總會看到 1, 10, 11, 12 ... 等, 而真正想要的順序是 1, 2, ... 到 100.
要解決此問題, 主要是要將 檔名 做下述修改:
- 1.jpg => 001.jpg
- 10.jpg => 010.jpg
- 100.jpg => 100.jpg
這樣子改完就會由 001, 002, 003 ... 開始照順序囉~
修改檔名的 Script, 有下述幾種做法: (使用 awk 的 sprintf 來做補 0 的動作)
ls | awk -F. '{system("mv " $0 " " sprintf("%03d.jpg", $1))}'
# 更改檔名時, 附檔名一律設為 jpg (目前較常用的是這個)ls | awk -F. '{system("mv " $0 " " sprintf("%03d.%3s", $1, $2))}'
# 檔名和附檔名分開紀錄, 更名時附檔名維持原檔名ls *.jpg | sort -n | awk '{system("mv " $0 " " sprintf("%03d.jpg", ++i))}'
# 經由 sort -n 排序過, 不管檔名是什麼.- 註: 這些 script 執行會直接更改, 以防意外, 建議先備份一份再來執行.
printf 也很好用
e.g.
i=9
printf "%03" $i => 009
printf "%03d" 9 => 009
感恩~ 🙂
請問若是資料夾要補0,怎麼做??? 好讓每個資料夾數字名稱長短補整齊。
比如說
10021B
794102C
補成這樣
000010021B
000794102C
字串的話,printf 補0 會有困難,得要在 awk 裡面跑 for 自己加~