Linux運維基礎之rename命令詳解

Linux運維基礎之rename命令詳解

Linux 命令 rename  旨在根據指定規則更改檔案和目錄的名稱。它不僅是一個簡單的重新命名工具,還允許使用者使用正規表示式執行批量重新命名操作,因此是系統管理員和開發人員的必備命令。

與用於移動或重新命名檔案的 mv 命令類似,rename 命令具有更大的靈活性和控制性。系統管理員、程式設計師和資料分析師等 IT 專業人員常用它來有效管理大型檔案集。

如何安裝 rename 命令

rename 命令的可用性可能因 Linux 發行版而異。下面,我將概述如何為一些常見發行版安裝和解除安裝 rename 命令:

基於 Debian 的系統 (e.g., Ubuntu)

安裝:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo apt-get update
sudo apt-get install rename
sudo apt-get update sudo apt-get install rename
sudo apt-get update
sudo apt-get install rename

解除安裝:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo apt-get remove rename
sudo apt-get remove rename
sudo apt-get remove rename

基於 RedHat 的系統 (e.g., Fedora, CentOS)

安裝:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo dnf install prename
sudo dnf install prename
sudo dnf install prename

解除安裝:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo dnf remove prename
sudo dnf remove prename
sudo dnf remove prename

Arch Linux

安裝:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo pacman -S perl-rename
sudo pacman -S perl-rename
sudo pacman -S perl-rename

解除安裝:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo pacman -R perl-rename
sudo pacman -R perl-rename
sudo pacman -R perl-rename

openSUSE

安裝:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo zypper install rename
sudo zypper install rename
sudo zypper install rename

解除安裝:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo zypper remove rename
sudo zypper remove rename
sudo zypper remove rename

如何使用 rename

1. 替換檔名中的字串

語法: rename 's/old/new/' *

說明: 將當前目錄下所有檔名中的字串 “old” 替換為 “new”。

示例: rename 's/test/demo/' *

Output:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
testfile1.txt renamed as demofile1.txt
testfile2.txt renamed as demofile2.txt
testfile1.txt renamed as demofile1.txt testfile2.txt renamed as demofile2.txt
testfile1.txt renamed as demofile1.txt
testfile2.txt renamed as demofile2.txt

當前目錄中所有名稱中包含 test 的檔案現在都替換為 demo

2. 為檔名新增字首

語法: rename 's/^/prefix_/' *

說明: 在當前目錄下所有檔名的開頭新增 “prefix_”。

示例: rename 's/^/sample_/' *

Output:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
file1.txt renamed as sample_file1.txt
file2.txt renamed as sample_file2.txt
file1.txt renamed as sample_file1.txt file2.txt renamed as sample_file2.txt
file1.txt renamed as sample_file1.txt
file2.txt renamed as sample_file2.txt

現在,當前目錄下的所有檔案都以 sample_ 開頭。

3. 刪除副檔名

語法: rename 's/\.ext$//' *

說明: 刪除當前目錄中所有匹配檔名的 “.ext” 副檔名。

示例: rename 's/\.txt$//' *

Output:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
document.txt renamed as document
notes.txt renamed as notes
document.txt renamed as document notes.txt renamed as notes
document.txt renamed as document
notes.txt renamed as notes

已刪除當前目錄下檔案的所有 .txt 副檔名。

4. 將檔名轉換為小寫

語法: rename 'y/A-Z/a-z/' *

說明: 將當前目錄下檔名中的所有大寫字母轉換為小寫字母。

示例: rename 'y/A-Z/a-z/' *

Output:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
FILE1.TXT renamed as file1.txt
FILE2.TXT renamed as file2.txt
FILE1.TXT renamed as file1.txt FILE2.TXT renamed as file2.txt
FILE1.TXT renamed as file1.txt
FILE2.TXT renamed as file2.txt

將當前目錄中所有大寫字母的檔名改為小寫。

5. 更改副檔名

語法: rename 's/\.oldext$/.newext/' *

說明: 將當前目錄中所有匹配檔名的副檔名從”.oldext “更改為”.newext”。

示例: rename 's/\.jpg$/.png/' *

Output:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
image1.jpg renamed as image1.png
image2.jpg renamed as image2.png
image1.jpg renamed as image1.png image2.jpg renamed as image2.png
image1.jpg renamed as image1.png
image2.jpg renamed as image2.png

當前目錄中所有檔案的 .jpg 副檔名都已更改為 .png

6. 從檔名中刪除字尾

語法: rename 's/suffix$//' *

說明: 刪除當前目錄下所有檔名末尾的 “字尾”。

示例: rename 's/_backup$//' *

Output:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
file1_backup.txt renamed as file1.txt
file2_backup.txt renamed as file2.txt
file1_backup.txt renamed as file1.txt file2_backup.txt renamed as file2.txt
file1_backup.txt renamed as file1.txt
file2_backup.txt renamed as file2.txt

當前目錄中所有以 _backup 結尾的檔案現在都去掉了字尾。

7. 用下劃線替換檔名中的空格

語法: rename 's/ /_/' *

說明: 用下劃線替換當前目錄下檔名中的所有空格。

示例: rename 's/ /_/' *

Output:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
my file.txt renamed as my_file.txt
another file.txt renamed as another_file.txt
my file.txt renamed as my_file.txt another file.txt renamed as another_file.txt
my file.txt renamed as my_file.txt
another file.txt renamed as another_file.txt

當前目錄中所有帶有空格的檔名現在都用下劃線代替了空格。

8. 在不更改副檔名的情況下為檔名新增字尾

語法: rename 's/(\.\w+)$/_suffix$1/' *

說明: 在當前目錄下所有副檔名前新增”_suffix”。

示例: rename 's/(\.\w+)$/_edited$1/' *

Output:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
file1.txt renamed as file1_edited.txt
file2.jpg renamed as file2_edited.jpg
file1.txt renamed as file1_edited.txt file2.jpg renamed as file2_edited.jpg
file1.txt renamed as file1_edited.txt
file2.jpg renamed as file2_edited.jpg

當前目錄下的所有檔案現在都會在副檔名前新增 _edited

更多 Linux 命令

目錄操作 rmdir · cd · pwd · exa · ls
檔案操作 cat · cp · dd · less · touch · ln · rename · more · head
檔案系統操作 chown · mkfs · locate
網路 ping · curl · wget · iptables · mtr
搜尋和文字處理 find · grep · sed · whatis · ripgrep · fd · tldr
系統資訊和管理 env · history · top · who · htop · glances · lsof
使用者和會話管理 screen · su · sudo · open

評論留言