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命令潜力的关键,建议在实际操作中多加练习,熟悉不同场景下的应用方法。

















