如何批量重命名Linux文件?rename和mmv命令高效批量改名方案

linux中批量重命名文件可用rename和mmv命令。rename支持正则表达式,适用于统一替换操作,如修改后缀、加前缀、去空格等;使用格式为rename ‘s/原内容/新内容/’ 文件列表。mmv适合结构化重命名,支持通配符匹配,常用于编号重组、路径拼接等场景;语法为mmv "匹配模式" "替换模式"。rename灵活但需注意转义字符,mmv直观但需用双引号包裹模式;简单替换用rename,复杂结构用mmv。

如何批量重命名Linux文件?rename和mmv命令高效批量改名方案

linux系统中,批量重命名文件是常见的操作需求,比如整理照片、日志文件归档、数据预处理等。如果你还在手动一个一个改名,那确实有点费劲了。其实,用好 rename 和 mmv 这两个命令,可以非常高效地完成批量重命名任务。

如何批量重命名Linux文件?rename和mmv命令高效批量改名方案

一、rename:基础又强大的批量改名利器

rename 命令支持正则表达式,适合做统一格式的替换操作,比如去掉空格、添加前缀、修改扩展名等。

如何批量重命名Linux文件?rename和mmv命令高效批量改名方案

使用方法:

rename 's/原内容/新内容/' 文件列表

举个例子,把所有 .txt 文件改成 .log:

rename 's/.txt$/.log/' *.txt

注意这里用了 perl 兼容的正则语法,所以括号、点号这些特殊字符要加反斜杠转义。

如何批量重命名Linux文件?rename和mmv命令高效批量改名方案

常见用途:

  • 批量去除文件名中的空格(替换为空):

    rename 's/ //g' *.jpg
  • 给文件统一加前缀:

    rename 's/^/photo_/' *.jpg
  • 修改后缀名:

    rename 's/.bak$/.old/' *.bak

⚠️ 小提示:建议先加上 -n 参数测试效果,确认没问题再执行真实操作。


二、mmv:适合复杂匹配与结构化重命名

mmv 是另一个专门用于批量移动、复制、追加和重命名文件的工具,尤其适合有规律的文件名转换,比如按编号排序、拼接路径等。

不过默认很多系统没装这个命令,你需要先安装:

sudo apt install mmv   # Debian/Ubuntu sudo yum install mmv   # centos

基本语法:

mmv "匹配模式" "替换模式"

比如,将 file1.txt, file2.txt 改为 newfile1.txt, newfile2.txt:

mmv "file*.txt" "newfile#1.txt"

这里的 #1 表示第一个通配符的内容。

实际应用场景:

  • 给文件加固定前缀:

    mmv "*.log" "backup_#1.log"
  • 交换文件名顺序(比如从“年月日”改为“日月年”):

    mmv "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]" "#4#5#6#7#8#1#2#3"

    这样 20240315 就会变成 15202403。

  • 多层目录下批量重命名:

    find . -name "*.tmp" -exec mmv "{}" "{}.old" ;

? 使用技巧:mmv 的模式匹配比较严格,记得引号要用双引号,避免被 shell 提前解析。


三、什么时候用哪个?

简单总结一下两者适用场景:

  • rename 更适合基于正则表达式的灵活替换,适合有一定脚本经验的人;
  • mmv 更适合结构化的、有编号或固定格式的批量重命名,逻辑更直观。

如果你只是想统一替换某个字符串,或者调整大小写,rename 足够了;但如果你要做复杂的编号重组、路径拼接,那就更适合用 mmv。


基本上就这些。这两个命令都不复杂,但在实际使用时容易忽略一些细节,比如是否需要转义字符、是否要测试运行等。用好了,它们能大大提升你处理文件的效率。

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享