Linux rename命令是Linux系统中用于批量文件重命名的强大工具,它能够通过正则表达式灵活匹配和替换文件名,大大提高文件管理效率,与mv命令只能逐个重命名不同,rename命令支持模式匹配和字符串替换,特别适合处理大量文件的重命名需求。

rename命令的基本语法
rename命令的基本语法结构为rename [选项] '表达式' 文件名...,表达式是核心部分,通常包含正则表达式和替换规则,该命令主要有两种实现版本:Perl版本(perl-rename)和C语言版本(util-linux),两者的语法略有不同,大多数现代Linux系统默认安装的是Perl版本,功能更强大,支持复杂的正则表达式操作。
常用选项说明
Perl版本的rename命令提供了多个实用选项,以下是常用选项的功能列表:
| 选项 | 功能描述 |
|---|---|
| -v | 显示重命名操作的详细信息 |
| -n | 仅模拟操作,不实际执行重命名 |
| -f | 强制覆盖已存在的文件 |
| -a | 按ASCII顺序处理文件 |
| -V | 显示版本信息 |
基本使用示例
-
简单字符串替换
将当前目录下所有.txt文件中的”old”替换为”new”:
rename 's/old/new/' *.txt
这条命令会遍历所有.txt文件,将文件名中首次出现的”old”替换为”new”。 -
批量添加前缀
为所有.jpg文件添加”photo“前缀:
`rename ‘s/^/photo/’ *.jpg正则表达式^`表示字符串开头,实现前缀添加。
-
批量修改扩展名
将所有.log文件扩展名改为.txt:
rename 's/\.log$/.txt/' *.log
表示字符串末尾,\.用于转义点号。 -
删除特定字符
移除所有文件名中的数字:
rename 's/[0-9]//g' *
[0-9]匹配数字,g标志表示全局替换。
高级应用技巧
-
基于条件的重命名
使用正则表达式匹配特定模式,例如只重命名包含”error”的文件:
rename 's/(error)(.*)\.log$/\1_\2.log/' *error*.log
括号创建捕获组,\1引用第一个捕获组的内容。 -
大小写转换
将所有文件名转为小写:
rename 'y/A-Z/a-z/' *
y/源字符/目标字符/实现字符替换,类似tr命令。
-
数字序列重命名
为文件添加数字前缀(如1、2):
rename 's/^/sprintf("%02d_", ++$i)/e' *
e标志表示执行Perl表达式,sprintf格式化数字。
注意事项
- 备份重要文件:批量重命名前建议先备份,避免误操作导致文件丢失。
- 测试操作:使用
-n选项模拟运行,检查重命名结果是否符合预期。 - 正则表达式转义:文件名中的特殊字符(如空格、$)可能需要转义处理。
- 版本差异:若系统安装的是C语言版本,语法为
rename 原字符串 新字符串 文件名,不支持正则表达式。
实际应用场景
- 图片整理:将手机拍摄的图片重命名为”日期_序号.jpg”格式。
rename 's/^IMG/(\d{4}-\d{2}-\d{2})_IMG/' * - 代码清理:统一项目文件中的命名规范,如将驼峰命名改为下划线命名。
rename 's/([a-z])([A-Z])/$1_$2/g' *.py - 日志管理:按日期重命名服务器日志文件。
rename 's/^server\.log$/server_$(date +%Y%m%d).log/' server.log
通过合理运用rename命令的强大功能,用户可以高效完成各种复杂的文件重命名任务,显著提升工作效率,掌握正则表达式的使用技巧是充分发挥rename命令潜力的关键,建议在实际操作中多加练习,熟悉不同场景下的应用方法。



















