本篇 ShengYu 介紹 Linux rename 的用法與範例,rename 是實用的重新命名工具,可以搭配正規表達式來使用,比起手動重新命名實在方便很多,尤其是要大量重新命名時特別有幫助,可以省下許多時間。
基本上 rename 跟 mv 跟差不多一樣功能的指令,但有些功能無法相通,所以在 macOS 下就沒有 rename 指令,就用 mv 取代即可。
rename 重新命名
將 xxx.jpg 加上 NEW_ 前綴字,使用的 rename 的指令如下,1
2$ rename 's/(.*)$/NEW_$1/' xxx.jpg
=> NEW_xxx.jpg
一次改大量的 jpg 副檔名的話1
$ rename 's/(.*)$/NEW_$1/' *.jpg
另外用 shell script 也可以達成1
$ for filename in *.jpg; do mv "$filename" "NEW_${filename}"; done;
也可以使用擴展正規表達式這樣寫1
2#$ mv {,NEW_}xxx.jpg
$ for filename in *.jpg; do mv {,NEW_}"$filename"; done;
把 JPEG 副檔名改成 jpg 副檔名1
$ rename .JPEG .jpg *.JPEG
用 shell script 也可以達成1
$ for filename in *.JPEG; do mv -i "$filename" "${filename%%.*}.jpg"; done
rename 實際案例
原先我的照片是 IMG_*.jpg
開頭,影片是 VID_*.mp4
開頭,但是這樣同時間的照片跟影片會分開檢視,這樣在編輯與分類時特別不方便,比較好的方式應該是照片跟影片一律改成 XXX_
開頭,例如以我的 pixel 手機為例,就一律重新命名成 PXL_
開頭,要區分照片跟影片的話用副檔名區分就可以了,
例如,我要將 IMG_
前綴字換成 PXL_
前綴字,1
2IMG_20210522_170609.jpg # 修改前
PXL_20210522_170609.jpg # 修改後
那麼就這樣使用1
$ rename 's/IMG_(.*)$/PXL_$1/' IMG_20210522_170609.jpg
jpg 照片的話就這樣下,1
$ rename 's/IMG_(.*)$/PXL_$1/' *.jpg
改用 shell script 就這樣寫,1
2
3
4for filename in $(\ls -d *.jpg)
do
mv $filename $(echo $filename | sed -e 's/IMG_/PXL_/')
done
mp4 影片的話就這樣下,1
$ rename 's/VID_(.*)$/PXL_$1/' *.mp4
改用 shell script 就這樣寫,1
2
3
4for filename in $(\ls -d *.mp4)
do
mv $filename $(echo $filename | sed -e 's/VID_/PXL_/')
done
以上就是 Linux rename 用法與範例的介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!
其它參考
How to rename with prefix/suffix?
https://stackoverflow.com/questions/208181/how-to-rename-with-prefix-suffix
file management - Is there a linux command like mv but with regex? - Super User
https://superuser.com/questions/70217/is-there-a-linux-command-like-mv-but-with-regex
其它相關文章推薦
Shell Script rename prefix 重新命名加上前綴字
Linux 常用指令教學懶人包
Linux cut 字串處理用法與範例
Linux sed 字串取代用法與範例
Linux grep/ack/ag 搜尋字串用法與範例
Linux du 查詢硬碟剩餘空間/資料夾容量用法與範例
Linux wget 下載檔案用法與範例