怎麼用shell批次編號修改檔名 [論壇 - Ubuntu 與工具程式及軟體推薦]
正在瀏覽:
1 名遊客
怎麼用shell批次編號修改檔名 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2008/6/15 2:56 所屬群組:
已註冊使用者 等級: 38
HP : 0 / 945
![]() |
請問,如果是以下檔名,要修改成編號.jpg,也就是01..........xx.jpg不知道要怎麼改?有100多個檔案rename不會用xd
00080_heavensbelow_1680x1050.jpg 00164_volcaniccoast_1680x1050.jpg 00084_amethyst_1680x1050.jpg 00169_foreststream_1680x1050.jpg 00099_manaisland_1680x1050.jpg 00170_waterfall_1680x1050.jpg 00107_tokyoatnight_1680x1050.jpg 00191_mtdoom_1680x1050.jpg 00108_hakonemine_1680x1050.jpg 00199_africanlandscape_1680x1050.jpg 00123_floridamorning_1680x1050.jpg 00201_lakejipe_1680x1050.jpg 00138_stjohncliff_1680x1050.jpg 00221_connecticutriver_1680x1050.jpg 00147_sealion_1680x1050.jpg 00230_mountainpeak_1680x1050.jpg 00148_pacificsunset_1680x1050.jpg 00152_tulum_1680x1050.jpg 00162_maui_1680x1050.jpg
2009/2/25 9:13
|
||||||||||
![]() |
回覆: 怎麼用shell批次編號修改檔名 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員二級
![]() ![]() 註冊日期:
2005/11/3 11:48 所屬群組:
已註冊使用者 等級: 5
HP : 0 / 124
![]() |
試試 krename ,支援蠻多種規則的
2009/2/25 9:17
|
||||||||||
![]() |
z
|
回覆: 怎麼用shell批次編號修改檔名 |
|
---|---|---|
Anon:z
|
寫 shell script 去處理
參考看看: rename-jpg.sh #!/bin/sh # 調查目前目錄所有 jpg 檔 # 將檔名(取 ls -l 輸出結果的第9字串)存到 /tmp/rename.tmp ls -l *.jpg | awk '{print $9}' > /tmp/rename.tmp # 迴圈記數初始化歸零 loopTimes=0 # 依序讀入剛剛儲存的 jpg 檔名清單檔 # 迴圈跑一次,就讀取一行(即原檔名) # 更名為從 001.jpg 開始 while read inputline do # 迴圈記數+1 loopTimes=`expr $loopTimes + 1` # 原先檔名,就是 inputline 讀進來的資料 oldName="$inputline" # 新檔名(編號),即是迴圈數 # 但是迴圈數直接當檔名並不美觀,前面給予補 0 # 這邊假設總圖片檔量低於 999 個,編號從 001.jpg ~ 999.jpg # 如果迴圈數小於 10,新檔名前面補 2 個 0 if [ $loopTimes -lt 10 ] ;then newName="00$loopTimes.jpg" # 否則如果迴圈數小於 100,新檔名前面補 1 個 0 elif [ $loopTimes -lt 100 ] ;then newName="0$loopTimes.jpg" # 其餘狀況(迴圈數大於等於 100),迴圈數就是新檔名 newName="loopTimes.jpg" fi # debug 用,僅顯示,不更名 #echo "舊檔名: $oldName 新檔名:$newName" # 進行實際更名 mv "$oldName" "$newName" done < /tmp/rename.tmp echo echo "更名處理完畢!!" echo 將這個 shell script 檔,放在和圖片檔同目錄 給於執行權限 chmod +x rename-jpg.sh 執行: ./rename-jpg.sh 一執行就會改喔,無法還原(無此功能),建議先備份。或修改一下程式碼,將 debug 那邊註解取消,實際更名那行註解起來,先預覽結果,滿意再更名。 原理: 1.先 ls -l 調查目錄中所有 jpg 檔名,存成一個純文字檔。 2.使用迴圈 + inputline 方法,依序讀入剛存的檔名清單。每次讀進來的是舊檔名,更名成新檔名,這樣就 ok 了。
2009/2/25 10:14
| 7ab5d 1b103 42c8a 3099a
|
|
![]() |
z
|
回覆: 怎麼用shell批次編號修改檔名 |
|
---|---|---|
Anon:z
|
更正:
發現上面程式碼有錯,少一個 else # 其餘狀況(迴圈數大於等於 100),迴圈數就是新檔名 else newName="loopTimes.jpg" fi
2009/2/25 10:19
| 7ab5d 1b103 42c8a 3099a
|
|
![]() |
回覆: 怎麼用shell批次編號修改檔名 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員四級
![]() ![]() 註冊日期:
2007/12/28 15:31 所屬群組:
已註冊使用者 等級: 19
HP : 0 / 454
![]() |
建議將
ls -l *.jpg | awk '{print $9}' > /tmp/rename.tmp 改為 ls -l *.jpg | awk '{print $8}' > /tmp/rename.tmp 檔名字串在 $8
2009/2/25 10:41
|
||||||||||
![]() |
回覆: 怎麼用shell批次編號修改檔名 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2008/6/15 2:56 所屬群組:
已註冊使用者 等級: 38
HP : 0 / 945
![]() |
謝謝兩位可以用了,不過檔案大於100後面的檔名變成loopTimes.jpg了
舊檔名: 00797_deadcalm_1680x1050.jpg 新檔名:098.jpg 舊檔名: 00798_bigrockdeniabeachspain_1680x1050.jpg 新檔名:099.jpg 舊檔名: 00800_falsecreekatdusk_1680x1050.jpg 新檔名:loopTimes.jpg 舊檔名: 00803_statepark_1680x1050.jpg 新檔名:loopTimes.jpg 後來我改成 elif [ $loopTimes -lt 500 ] ;then就正常了,我是亂亂改啦不會寫XD if [ $loopTimes -lt 10 ] ;then newName="00$loopTimes.jpg" # 否則如果迴圈數小於 100,新檔名前面補 1 個 0 elif [ $loopTimes -lt 500 ] ;then newName="0$loopTimes.jpg" # 其餘狀況(迴圈數大於等於 100),迴圈數就是新檔名 else newName="loopTimes.jpg" fi 舊檔名: 00797_deadcalm_1680x1050.jpg 新檔名:098.jpg 舊檔名: 00798_bigrockdeniabeachspain_1680x1050.jpg 新檔名:099.jpg 舊檔名: 00800_falsecreekatdusk_1680x1050.jpg 新檔名:0100.jpg 舊檔名: 00803_statepark_1680x1050.jpg 新檔名:0101.jpg
2009/2/25 12:33
|
||||||||||
![]() |
回覆: 怎麼用shell批次編號修改檔名 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2008/10/7 21:19 所屬群組:
已註冊使用者 等級: 36
HP : 0 / 896
![]() |
hepha 寫到: 應該是這裡出錯了: # 其餘狀況(迴圈數大於等於 100),迴圈數就是新檔名 else newName="$loopTimes.jpg" fi
2009/2/25 13:02
|
||||||||||
I′m UGP
|
|||||||||||
![]() |
回覆: 怎麼用shell批次編號修改檔名 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2008/6/15 2:56 所屬群組:
已註冊使用者 等級: 38
HP : 0 / 945
![]() |
UGP 寫到:hepha 寫到: 恩,可以囉!謝謝
2009/2/25 23:02
|
||||||||||
![]() |
您可以查看帖子.
您不可發帖.
您不可回覆.
您不可編輯自己的帖子.
您不可刪除自己的帖子.
您不可發起投票調查.
您不可在投票調查中投票.
您不可上傳附件.
您不可不經審核直接發帖.