在 Linux 系统管理中,文件和目录的操作是最基础且频繁的任务之一。rename 命令作为批量重命名文件的利器,能够显著提高工作效率,尤其适合需要按特定规则修改大量文件名的场景,与手动逐个重命名不同,rename 命令通过正则表达式或模式匹配实现自动化处理,既准确又高效,本文将详细介绍 rename 命令的两种常见语法版本、核心功能、使用场景及注意事项,帮助读者全面掌握这一实用工具。

rename 命令的两种语法版本
Linux 系统中的 rename 命令存在两种主流实现,其语法和功能差异较大,需根据系统环境选择使用方式。
Perl 版本(推荐)
基于 Perl 的 rename 命令功能强大,支持正则表达式,常见于 Debian、Ubuntu 等 Debian 系发行版,通过 man rename 可查看其详细文档,安装命令为 sudo apt install rename(Ubuntu)或 sudo yum install prename(CentOS),其基本语法为:
rename 'PERL_EXPRESSION' FILE...
PERL_EXPRESSION 是 Perl 语言的正则表达式表达式,用于定义替换规则;FILE 为待处理的文件名,支持通配符(如 *.txt)。
util-linux 版本
部分系统(如 Fedora、Arch Linux)默认采用 util-linux 包提供的 rename 命令,语法更简单但功能有限,其基本语法为:
rename [OPTIONS] OLD_NAME NEW_NAME FILE...
该版本通过字符串替换实现重命名,不支持正则表达式,仅适用于简单的文本替换场景。

核心功能与使用示例
批量添加前缀或后缀
假设当前目录下有多个 .log 文件,需统一添加 backup_ 前缀:
rename 's/^/backup_/' *.log
s///表示替换操作;^匹配字符串开头,backup_为添加的前缀。
若需添加后缀(如 _2023),可修改为:
rename 's/(_\d{8})?/_2023/' *.log # 避免重复添加后缀
批量修改文件扩展名
将所有 .txt 文件改为 .md:
rename 's/\.txt$/.md/' *.txt
\.txt$匹配以.txt结尾的字符串;.md为新的扩展名。
删除特定字符
删除文件名中的所有数字:
rename 's/\d+//g' *
\d+匹配一个或多个数字;g表示全局替换。
大小写转换
将所有文件名转为小写:

rename 'tr/A-Z/a-z/' *
tr函数用于字符替换,A-Z到a-z实现大写转小写。
复杂正则表达式匹配
假设文件名格式为 report_20230101.txt,需修改为 2023-01-01_report.txt:
rename 's/^report_(\d{4})(\d{2})(\d{2})\.txt$/$1-$2-$3_report.txt/' *
- 捕获组
(\d{4})、(\d{2})分别提取年、月、日; $1-$2-$3重新组织日期格式。
实用场景对比
| 场景 | Perl 版本命令示例 | util-linux 版本命令示例 |
|---|---|---|
| 添加前缀 | rename 's/^/pre_/' * |
rename '' 'pre_' *(不适用) |
| 修改扩展名 | rename 's/\.jpg$/\.png/' * |
rename .jpg .png * |
| 删除特定字符 | rename 's/_//g' * |
rename '' '' *(不适用) |
| 替换固定字符串 | rename 's/old/new/' * |
rename old new * |
注意事项
- 备份测试:批量重命名前建议先使用
ls或find预览结果,或通过mv -n避免覆盖文件。 - 正则表达式特殊字符:需转义 、、 等元字符,如
rename 's/\.txt/\.md/' *。 - 空格处理:文件名含空格时,建议用
find结合-print0和xargs -0处理,避免错误分割。 - 版本差异:通过
rename --version确认当前版本,避免因语法不同导致命令失效。
替代方案
若 rename 命令不满足需求,可考虑以下替代工具:
mmv:轻量级批量重命名工具,语法简单(如mmv "*.txt" "#1.md")。renameutils:提供mv、imv(交互式重命名)等命令,支持更灵活的文本操作。bash脚本:通过for循环和参数扩展实现复杂逻辑,for file in *.txt; do mv "$file" "${file%.txt}.bak" done
掌握 rename 命令的用法,能够有效简化 Linux 环境下的文件管理任务,无论是简单的字符串替换还是复杂的正则表达式处理,合理选择语法版本并注意细节,即可高效完成批量重命名操作。




















