如何批量重命名Linux文件?rename和mmv命令高效批量改名方案

linux中批量重命名文件可用rename和mmv命令。rename支持正則表達式,適用于統一替換操作,如修改后綴、加前綴、去空格等;使用格式為rename ‘s/原內容/新內容/’ 文件列表。mmv適合結構化重命名,支持通配符匹配,常用于編號重組、路徑拼接等場景;語法為mmv "匹配模式" "替換模式"。rename靈活但需注意轉義字符,mmv直觀但需用雙引號包裹模式;簡單替換用rename,復雜結構用mmv。

如何批量重命名Linux文件?rename和mmv命令高效批量改名方案

linux系統中,批量重命名文件是常見的操作需求,比如整理照片、日志文件歸檔、數據預處理等。如果你還在手動一個一個改名,那確實有點費勁了。其實,用好 rename 和 mmv 這兩個命令,可以非常高效地完成批量重命名任務。

如何批量重命名Linux文件?rename和mmv命令高效批量改名方案

一、rename:基礎又強大的批量改名利器

rename 命令支持正則表達式,適合做統一格式的替換操作,比如去掉空格、添加前綴、修改擴展名等。

如何批量重命名Linux文件?rename和mmv命令高效批量改名方案

使用方法:

rename 's/原內容/新內容/' 文件列表

舉個例子,把所有 .txt 文件改成 .log:

rename 's/.txt$/.log/' *.txt

注意這里用了 perl 兼容的正則語法,所以括號、點號這些特殊字符要加反斜杠轉義。

如何批量重命名Linux文件?rename和mmv命令高效批量改名方案

常見用途:

  • 批量去除文件名中的空格(替換為空):

    rename 's/ //g' *.jpg
  • 給文件統一加前綴:

    rename 's/^/photo_/' *.jpg
  • 修改后綴名:

    rename 's/.bak$/.old/' *.bak

?? 小提示:建議先加上 -n 參數測試效果,確認沒問題再執行真實操作。


二、mmv:適合復雜匹配與結構化重命名

mmv 是另一個專門用于批量移動、復制、追加和重命名文件的工具,尤其適合有規律的文件名轉換,比如按編號排序、拼接路徑等。

不過默認很多系統沒裝這個命令,你需要先安裝:

sudo apt install mmv   # Debian/Ubuntu sudo yum install mmv   # centos

基本語法:

mmv "匹配模式" "替換模式"

比如,將 file1.txt, file2.txt 改為 newfile1.txt, newfile2.txt:

mmv "file*.txt" "newfile#1.txt"

這里的 #1 表示第一個通配符的內容。

實際應用場景:

  • 給文件加固定前綴:

    mmv "*.log" "backup_#1.log"
  • 交換文件名順序(比如從“年月日”改為“日月年”):

    mmv "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]" "#4#5#6#7#8#1#2#3"

    這樣 20240315 就會變成 15202403。

  • 多層目錄下批量重命名:

    find . -name "*.tmp" -exec mmv "{}" "{}.old" ;

? 使用技巧:mmv 的模式匹配比較嚴格,記得引號要用雙引號,避免被 shell 提前解析。


三、什么時候用哪個?

簡單總結一下兩者適用場景:

  • rename 更適合基于正則表達式的靈活替換,適合有一定腳本經驗的人;
  • mmv 更適合結構化的、有編號或固定格式的批量重命名,邏輯更直觀。

如果你只是想統一替換某個字符串,或者調整大小寫,rename 足夠了;但如果你要做復雜的編號重組、路徑拼接,那就更適合用 mmv。


基本上就這些。這兩個命令都不復雜,但在實際使用時容易忽略一些細節,比如是否需要轉義字符、是否要測試運行等。用好了,它們能大大提升你處理文件的效率。

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享