使用 awk sprintf 修改 檔案名稱

某些圖片會是 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 執行會直接更改, 以防意外, 建議先備份一份再來執行.



更多推薦文章

This work, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

About Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
This entry was posted in My_Note-Unix. Bookmark the permalink.

2 Responses to 使用 awk sprintf 修改 檔案名稱

  1. jumbler says:

    printf 也很好用
    e.g.
    i=9
    printf "%03" $i => 009

  2. Tsung says:

    printf "%03d" 9 => 009
    感恩~ :)

發表迴響

您的電子郵件位址並不會被公開。 必要欄位標記為 *

*

您可以使用這些 HTML 標籤與屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>