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

评论留言