Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux rename 指令批次重命名完全攻略:C 語言版 vs Perl 版差異詳解

編輯:關於 Linux

rename 是 Linux 批次重命名利器,功能比 mv 強大得多。但系統可能預裝兩種完全不同的版本——C 語言版(傳統)與 Perl 版(現代、支援正則),語法互不相容。本文教您快速辨識版本、掌握兩種語法,並提供實戰範例讓您輕鬆處理大量檔案改名需求。

如何辨識系統安裝的是哪個版本?

man rename

查看手冊頁首行:

  • RENAME (1) Linux Programmer's Manual → C 語言版
  • RENAME (1) Perl Programmers Reference Guide → Perl 版

現代發行版(Ubuntu 18.04+、Debian 10+、Fedora 30+、Arch 等)預設多為 Perl 版;舊版 Red Hat/CentOS 可能仍是 C 版。

C 語言版:簡單字串替換

語法

rename 舊字串 新字串 檔案...

三個固定參數:from、to、file...。只能做固定字串整體替換,不支援正則、不支援遞增編號。

實戰範例

# 將所有 log 開頭的檔案改為 history 開頭
rename log history log*

# 批次將 .jpeg 副檔名改為 .jpg
rename .jpeg .jpg *.jpeg

結果:log001.txt → history001.txt、photo.jpeg → photo.jpg。每個檔案套用相同的單一替換規則。

Perl 版:正則表達式無限可能

語法

rename 'perl正則運算式' 檔案...

兩個參數:第一個是 Perl 運算式(通常用 s/搜尋/替換/ 或 y/字元對應/),第二個是檔案清單。支援完整 Perl 正則功能(捕獲群組、條件、代碼執行等)。

核心運算式速查

運算式功能範例
s/搜尋/替換/單次替換s/\.bak$// 移除 .bak 尾綴
s/搜尋/替換/g全域替換s/ /_/g 所有空格改底線
y/A-Z/a-z/字元轉換(如 tr)大寫改小寫
$_ = sprintf("img%03d.jpg", $i++)Perl 代碼重命名按序號重命名 img001.jpg...

實戰範例集

# 1. 移除所有 .bak 尾綴
rename 's/\.bak$//' *.bak

# 2. 檔名大寫改小寫
rename 'y/A-Z/a-z/' *

# 3. 移除檔名中的空格(Windows 檔案常見問題)
rename 's/ /_/g' *

# 4. 依序編號重命名:img001.jpg, img002.jpg...
i=1; rename 's/.*/sprintf("img%03d.jpg", $i++)/e' *.jpg

# 5. 在檔名前加上日期前綴
rename 's/^/20240115_/' *

# 6. 將 IMG_1234.JPG 統一改為 img_1234.jpg(大小寫+前綴)
rename 's/^IMG_(\d+)\.JPG$/img_$1.jpg/i' *.JPG

常見陷阱與避坑指南

  • 試跑模式:加上 -n 或 --dry-run 只顯示會怎麼改,不實際執行(Perl 版支援)。
  • 大小寫敏感:Perl 正則預設區分大小寫,加 i 修飾符忽略大小寫。
  • 檔名含特殊字元:用 find -print0 | xargs -0 rename ... 處理含空格、換行的檔名。
  • 遞迴處理子目錄:find . -type f -name '*.txt' | rename 's/foo/bar/'(注意輸入為檔案路徑)。

快速決定:該用哪個版本?

  • 單純字串替換、不想學正則 → 兩版皆可,C 版語法更直覺。
  • 需正則、條件判斷、編號、大小寫轉換、複雜模式 → 必須用 Perl 版。
  • 腳本需跨平台 → 明確呼叫 perl-rename 或 file-rename(Debian/Ubuntu 套件名),避免版本衝突。

掌握 rename(特別是 Perl 版),配合 find、xargs,就能在終端機幾秒內完成原本需寫腳本甚至手動點選的大量改名任務,是 Linux 管理者的必殺技之一。

Copyright © Windows教程網 All Rights Reserved