Linux怎么批量修改文件名_Linux下rename命令与通配符应用【指南】_技术教程_七洗推广网

Linux怎么批量修改文件名_Linux下rename命令与通配符应用【指南】

#技术教程 发布时间: 2026-01-17
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、为每个文件名前添加时间戳前缀(如20250520_):
for file in *; do mv "$file" "20250520_$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):
mm

v "*_*_*.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

技术教程SEO

上一篇 : 如何使用 position: absolute 精确居中元素

下一篇 : 手机上的“开发者选项”能乱开吗?这些功能非常实用【探索】
品牌营销
专业SEO优化
添加左侧专家微信
获取产品详细报价方案