Skip to content

[Linux] 使用 mv、rename 來替檔案重新命名

在 Linux 作業系統底下,若是我們想要替一份檔案重新命名,通常我們會使用 mv 或是 rename 這兩個指令。

當然,我們也可以通過 GUI 界面來改名,不過使用 Commend Line 下指令總是快多了。更別提使用 rename 指令更是可以『批次』處理重新命名的需求。

其實過去我僅僅只是會使用 mv 來替檔案改名的 …… 如果碰上有複數文件都要重新命名的情況,我會乾脆地寫個 Shell Script 來處理。不過今天學習了下 rename 這個指令,發現這就是我想要的功能,於是就連同 mv 指令一同紀錄在這兒了。


mv 指令

mv 指令,其實就是所謂的 “Move” 的縮寫。這個指令最主要的功能就是『移動檔案』,不過在移動檔案路徑的同時我們也能重新命名檔案,故也順理成章地成為了我們重新命名檔案的指令。

使用方法為:

mv old_file new_file

下面來看個實際例子。假設今天我的資料夾當中一共有四份檔案:

那麼我就可以使用 mv 指令來替檔案改名。

mv 1.test 1.txt

Output:

我們可以發現,我們已經將本來的 “1.test” 檔案重新命名為 “1.txt” 了。


rename 指令

rename 基本上分成兩類。

  • rename.ul: C 語言版本
  • rename: Perl 版本

使用方法比 mv 複雜,基本上有三個變數:

rename.ul "要被取代之字串" "欲取代成之字串" "匹配的檔案"

以我剛才的檔案為例,我可以使用以下的指令將其全部重新命名:

rename.ul .test .txt *.test

Output:

如果是要使用 Perl 的 rename,則需要使用以下指令安裝:

sudo apt install rename

Perl 版本的 rename 只有兩個參數:要修改的 Pattern、要修改的檔案。

而修改的方式與 VIM 當中的取代也很像。還是以我目前的資料夾為例,若我想要將所有 txt 檔案全部重新命名為 test 副檔名:

rename 's/.txt/.test/' *.txt

Output:

基本上,我個人都覺得挺好用的,尤其是 rename 的部份。仔細想想,我以前到底花了多少時間去寫 mv 批次重新命名的 Shell Script 啊……

成句/這是年輕犯下的錯- Komica wiki

References


Read More

Tags:

Leave a Reply