Linux 修改檔案名稱

  • Linux 單次修改檔案名稱。
  • Linux 批次修改檔案名稱。

單檔案命名用 mv

指令 mv,其實最主要的功能是拿來搬移檔案,不過在搬移的時候能夠進行重新指定檔名,所以就被順理成章的成為我們重新命名的指令了。

1
2
# 指令 舊檔案 新檔案
$ mv old_file new_file

多檔案命名用 rename

rename 指令可以做大量的檔案更名,它使用 perl 的正規表式法來訂定格式,也稱為 perl-rename,因此 prename 與 rename 兩個指令是相同的。不過在 Ubuntu 20.04 之後,rename 指令已經沒有內建了,必須自行安裝。

Ubuntu 20.04 內建有另一款叫 rename.ul 的更名指令,兩個指令的使用方法並不相同,這邊先以 perl rename 來試範一些我常用的更名方法。


安裝

Ubuntu 20.04 安裝 renameUbuntu 18.04 以前已內建)

1
2
3
$ sudo apt install rename
# or
$ brew install rename

基本用法

1
$ rename 's/原字串/新字串/' 要改的檔案
  • -n:僅列出更名後的結果,不會真的進行更名,建議更名前一定要檢查。
  • -d:不對資料夾做更名,僅針對目標路徑下的檔案。

基本檔名更改

將 A1、A2、A3 改為 B1、B2、B3

1
2
#                 所有檔案
$ rename 's/A/B/' *
  • 若碰到需要修改特殊字元,需再前面加上反斜線(\)。

在開頭/結尾插入文字

將 A1、A2、A3 改為 ZA1、ZA2、ZA3

1
2
#                 所有檔案
$ rename 's/^/Z/' *

將 A1、A2、A3 改為 A10、A20、A30

1
2
#                 所有檔案
$ rename 's/$/Z/' *

批次更改副檔名

將 .html 改成 .phtml

1
2
#                             所有 .html 結尾的檔案
$ rename 's/\.html$/\.phtml/' *.html
  • .的前面需加上跳脫符號\
  • 原檔名加上$是因為要改的是結尾的副檔名,沒有加$的話,如果原檔名中也有 html 的字串,會被一併更改。

大小寫轉換

大寫轉小寫

1
$ rename 'y/A-Z/a-z/' *

小寫轉大寫

1
$ rename 'y/a-z/A-Z/' *
Author

LinYoYo

Posted on

2021-07-01

Updated on

2021-07-01

Licensed under