Linux rename 用法與範例

本篇 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
2
IMG_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
4
for 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
4
for 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 下載檔案用法與範例