如何在Linux中批量修改文件名?
- Linux
- 2025-06-13
- 7
在Linux系统中,批量修改文件名是常见的文件管理需求,无论是整理照片、日志文件还是代码项目,以下详细介绍四种专业可靠的方法,涵盖不同场景和复杂度,操作前请务必备份数据,避免误操作。
rename 命令(推荐高效方法)
rename 是专为批量重命名设计的工具,支持正则表达式,注意不同发行版可能预装不同版本:
-
Perl版本(常见于Ubuntu/Debian):语法灵活,支持正则替换
-
util-linux版本(常见于CentOS/RHEL):功能较基础
# 通配符模式:将前缀 "video_" 改为 "clip_" rename video_ clip_ video_*.mp4
提示:
- 使用 rename --help 确认版本
- 测试命令:先执行 rename -n 's/old/new/' *.txt(-n 参数模拟运行)
- ${file// /_} 是Bash的字符串替换语法
- 处理特殊字符(如空格)时,变量必须用双引号包裹 "$file"
- #1 表示匹配的第一个通配符部分
- 支持 (任意字符)和 (单个字符)
- -type f:仅查找文件
- -exec ... +:高效传递结果给后续命令
- ${file%.html}:删除字符串末尾的 .html
- 备份文件:
执行前创建备份:cp -r original_dir/ backup_dir/
- 测试命令:
用 echo 预览结果(如 echo mv "old" "new")
- 处理特殊字符:
文件名含空格、括号时,始终用引号包裹变量("$file")
- 权限问题:
若提示权限不足,用 sudo 或 chmod 调整目录权限
Shell循环 + mv 命令(通用基础方法)
通过 for 循环结合 mv 命令,适合简单修改或无 rename 的环境:

关键技巧:
mmv 工具(直观通配符匹配)
安装后可通过通配符批量移动/重命名文件:
# 安装(Debian/Ubuntu) sudo apt install mmv # 将 "photo_2022_*.png" 改为 "2022_photo_*.png" mmv "photo_2022_*.png" "2022_photo_#1.png"
find + 循环(递归子目录操作)
需修改子目录中的文件时,结合 find 和循环:

# 递归将 .html 文件扩展名改为 .php find . -type f -name "*.html" -exec sh -c ' for file; do mv "$file" "${file%.html}.php" done ' sh {} +
参数解析:
注意事项(安全操作指南)
方法选择建议
场景 推荐工具 简单替换/前缀后缀 Shell循环 复杂正则表达式 rename (Perl版) 子目录递归操作 find + 循环 直观通配符匹配 mmv 引用说明:本文方法基于Linux核心工具(GNU Bash, util-linux, Perl rename),参考Linux man-pages及社区实践,操作前建议查阅相关命令的 man 手册(如 man rename)。
通过上述方法,可高效完成99%的批量重命名需求,复杂场景建议分步测试,确保数据安全。