Linux 的 rename 指令可以做大量的檔案更名,它使用 perl 的正規表式法來訂定格式,也稱為 perl-rename,因此 prename 與 rename 兩個指令是相同的。不過在 Ubuntu 20.04 之後,rename 指令已經沒有內建了,必須自行安裝。
在 Ubuntu 20.04 內建有另一款叫 rename.ul 的更名指令,兩個指令的使用方法並不相同,這邊先以 perl rename 來試範一些我常用的更名方法
安裝 rename
Ubuntu 20.04 安裝 rename(Ubuntu 18.04 以前已內建)
sudo apt install rename
如果是 CentOS 的話,則要安裝 prename(perl-rename)
sudo yum install prename
rename 基本用法
rename ’s/原字串/新字串/’要改的檔案
- -n:僅列出更名後的結果,不會真的進行更名,建議更名前一定要檢查
- -d:不對資料夾做更名,僅針對目標路徑下的檔案
基本檔名更改
將 A1、A2、A3 改為 B1、B2、B3
rename 's/A/B/' *
如果要更改資料夾底下所有的檔案,最後用 * 號即可,如果碰到要改一些符號如:(、[,要在符號前面加上「</span>」跳脫字元,詳細說明可 google 搜尋「bash 跳脫字元」
在檔名開頭或結尾插入文字
將 A1、A2、A3 改為 ZA1、ZA2、ZA3
rename 's/^/Z/' *
將 A1、A2、A3 改為 A10、A20、A30
rename 's/$/0/' *
- ^:檔名的開頭
- $:檔名的結尾
批次更改副檔名
將 *.jpeg 改成 *.jpg
rename 's/\.jpeg$/\.jpg/' *.jpeg
「.」的前面要加上跳脫字元,原檔名加上 $ 是因為要改的是結尾的副檔名,沒有加 $ 的話,如果原檔名中也有 jpeg 的字串,會被一併更改。
檔名的英文大小寫轉換
將檔名中的英文小寫全部轉為大寫
rename 'y/a-z/A-Z/' *
將檔名中的英文大寫全部轉為小寫
rename 'y/A-Z/a-z/' *