Linux批量改名技巧:rename与通配符使用教程
时间:2026-04-14 20:38:35 213浏览 收藏
想在Linux中高效、精准地批量重命名文件,告别手动操作的低效与易错?本文系统梳理了五种实用且互不依赖的方法:从功能强大的rename命令结合正则表达式实现灵活替换,到for循环+mv提供高度可控的逻辑定制;从专为模式化重命名设计的mmv命令,到find配合-exec递归处理多级目录中的文件;再到仅用Shell参数扩展完成无外部依赖的轻量操作——无论你是日常运维、开发调试还是脚本自动化,总有一种方案能快速解决你的批量改名难题。

如果您需要在Linux系统中批量重命名多个文件,但手动逐个修改效率低下且容易出错,则可以利用rename命令结合通配符实现高效、精准的批量操作。以下是几种常用且互不依赖的批量修改文件名方法:
一、使用rename命令配合基本正则替换
rename命令支持Perl风格正则表达式,可对文件名中匹配的字符串进行全局替换,适用于统一前缀、后缀或中间字符的批量修改。
1、将当前目录下所有以“.txt”结尾的文件改为“.log”结尾:
rename 's/\.txt$/.log/' *.txt
2、删除所有文件名开头的“old_”前缀:
rename 's/^old_//' old_*
3、将文件名中的空格全部替换为下划线:
rename 's/ /_/g' *
二、使用for循环配合mv命令实现可控重命名
当rename不可用或需加入条件判断、格式化逻辑时,for循环提供更高自由度,尤其适合处理数字序号、日期格式等结构化重命名场景。
1、将当前目录所有.jpg文件按顺序重命名为img001.jpg、img002.jpg……:
counter=1; for file in *.jpg; do mv "$file" "img$(printf "%03d" $counter).jpg"; ((counter++)); done
2、为每个文件名前添加时间戳前缀(如20240520_):
for file in *; do mv "$file" "20240520_$file"; done
3、仅对大小超过1MB的文件重命名,添加“.large”后缀:
for file in *; do [[ -f "$file" ]] && [[ $(stat -c "%s" "$file") -gt 1048576 ]] && mv "$file" "${file}.large"; done
三、使用mmv命令进行模式化批量重命名
mmv命令专为批量移动与重命名设计,通过通配符模式匹配源文件与目标名称,语法简洁且支持反向引用,适合复杂映射关系。
1、安装mmv(如未预装):
sudo apt install mmv (Debian/Ubuntu)
sudo yum install mmv (CentOS/RHEL)
2、将所有“file_*.txt”重命名为“document_*.txt”:
mmv "file_*.txt" "document_#1.txt"
3、交换文件名中两个下划线分隔字段的位置(如abc_def_ghi.txt → def_abc_ghi.txt):
mmv "*_*_*.txt" "#2_#1_#3.txt"
四、使用find配合-exec执行多级目录重命名
当需递归处理子目录中符合条件的文件时,find命令可精准定位路径,再调用rename或mv完成重命名,避免遗漏深层文件。
1、递归查找并重命名所有名为“temp.log”的文件为“backup.log”:
find . -type f -name "temp.log" -exec rename 's/temp\.log$/backup.log/' {} \;
2、将所有层级下的“.bak”文件移至同级目录并改名为“.old”:
find . -type f -name "*.bak" -exec mv {} {}old \; -exec rename 's/\.bakold$/.old/' {}old \;
3、仅对最近7天内修改过的PNG文件添加“recent_”前缀:
find . -type f -name "*.png" -mtime -7 -exec rename 's/^/recent_/' {} \;
五、使用shell参数扩展进行无外部命令的轻量重命名
纯Bash内置功能即可完成简单批量操作,无需依赖rename、mmv等额外工具,适用于受限环境或脚本嵌入场景。
1、去除所有文件名末尾的“.tmp”扩展名:
for file in *.tmp; do [[ -e "$file" ]] && mv "$file" "${file%.tmp}"; done
2、将所有文件名转为小写(兼容含空格路径):
for file in *; do [[ -e "$file" ]] && mv "$file" "$(echo "$file" | tr 'A-Z' 'a-z')"; done
3、在所有文件名后追加“.processed”后缀:
for file in *; do [[ -e "$file" ]] && mv "$file" "${file}.processed"; done
到这里,我们也就讲完了《Linux批量改名技巧:rename与通配符使用教程》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
459 收藏
-
292 收藏
-
356 收藏
-
243 收藏
-
278 收藏
-
491 收藏
-
285 收藏
-
424 收藏
-
315 收藏
-
497 收藏
-
291 收藏
-
169 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习