Linux运维基础之rename命令详解

Linux运维基础之rename命令详解

Linux 命令 rename  旨在根据指定规则更改文件和目录的名称。它不仅是一个简单的重命名工具,还允许用户使用正则表达式执行批量重命名操作,因此是系统管理员和开发人员的必备命令。

与用于移动或重命名文件的 mv 命令类似,rename 命令具有更大的灵活性和控制性。系统管理员、程序员和数据分析师等 IT 专业人员常用它来有效管理大型文件集。

如何安装 rename 命令

rename 命令的可用性可能因 Linux 发行版而异。下面,我将概述如何为一些常见发行版安装和卸载 rename 命令:

基于 Debian 的系统 (e.g., Ubuntu)

安装:

sudo apt-get update
sudo apt-get install rename

卸载:

sudo apt-get remove rename

基于 RedHat 的系统 (e.g., Fedora, CentOS)

安装:

sudo dnf install prename

卸载:

sudo dnf remove prename

Arch Linux

安装:

sudo pacman -S perl-rename

卸载:

sudo pacman -R perl-rename

openSUSE

安装:

sudo zypper install rename

卸载:

sudo zypper remove rename

如何使用 rename

1. 替换文件名中的字符串

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

说明: 将当前目录下所有文件名中的字符串 “old” 替换为 “new”。

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

Output:

testfile1.txt renamed as demofile1.txt
testfile2.txt renamed as demofile2.txt

当前目录中所有名称中包含 test 的文件现在都替换为 demo

2. 为文件名添加前缀

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

说明: 在当前目录下所有文件名的开头添加 “prefix_”。

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

Output:

file1.txt renamed as sample_file1.txt
file2.txt renamed as sample_file2.txt

现在,当前目录下的所有文件都以 sample_ 开头。

3. 删除文件扩展名

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

说明: 删除当前目录中所有匹配文件名的 “.ext” 文件扩展名。

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

Output:

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:

FILE1.TXT renamed as file1.txt
FILE2.TXT renamed as file2.txt

将当前目录中所有大写字母的文件名改为小写。

5. 更改文件扩展名

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

说明: 将当前目录中所有匹配文件名的扩展名从”.oldext “更改为”.newext”。

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

Output:

image1.jpg renamed as image1.png
image2.jpg renamed as image2.png

当前目录中所有文件的 .jpg 扩展名都已更改为 .png

6. 从文件名中删除后缀

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

说明: 删除当前目录下所有文件名末尾的 “后缀”。

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

Output:

file1_backup.txt renamed as file1.txt
file2_backup.txt renamed as file2.txt

当前目录中所有以 _backup 结尾的文件现在都去掉了后缀。

7. 用下划线替换文件名中的空格

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

说明: 用下划线替换当前目录下文件名中的所有空格。

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

Output:

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:

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

评论留言