在Linux中,批量重命名文件是一项常见且有用的操作。以下是三种常用的批量重命名文件的方法,每种方法都附有示例。这些方法既可以适用于新手,也适用于更有经验的用户。

话不多说,直接上干货!


rename 命令

rename命令是一种强大的批量重命名工具,它支持使用正则表达式来匹配和替换文件名。

示例:

假设你想将所有以.txt结尾的文件扩展名改为.text,你可以使用以下命令:

rename 's/\.txt$/.text/' *.txt

这个命令会查找当前目录中所有以.txt结尾的文件,并将它们的扩展名更改为.text。

mv命令结合循环

对于不支持rename命令的系统或者更倾向于使用基本命令的用户,可以使用mv命令结合shell循环来进行批量重命名。

示例:

将所有.jpeg文件重命名为.jpg,可以使用以下脚本:

for file in *.jpeg; do
  mv "$file" "${file%.jpeg}.jpg"
done

这个脚本会遍历当前目录中所有.jpeg文件,并将它们重命名为.jpg。

mmv 命令

mmv是另一种用于批量移动和重命名文件的实用工具。它可以使用通配符模式来匹配文件名。

示例:

将文件名中的"空格"替换为"下划线",可以使用以下命令:

mmv "* *" "#1_#2"

这个命令会查找文件名中包含空格的文件,并用下划线替换这些空格。


每种方法都有其特点和适用场景。rename命令非常强大,但需要一定的正则表达式知识。使用mv命令结合循环则更基础,适用于几乎所有Linux系统。而mmv提供了一个中间的选择,既不需要复杂的正则表达式,又比基本的mv命令更灵活。

实战操作演示

假如我收集了来自不同时间不同地区的数据文件,原来的文件格式是“2024-北京-001.txt”,有几百个这样的文件,现在想将其批量修改文件名,比如修改为“北京-24-001_Good.txt”,如何操作最方便?

仅需一行命令完成操作:

rename 's/(\d{4})-(.*)-(\d{3})\.txt$/$2-$1-$3_Good.txt/' *.txt

这个命令的作用是:

(\d{4}):  匹配四位数的年份(比如“2024”)并捕获。
(.*):  匹配城市名称(比如“北京”)并捕获。
(\d{3}):  匹配三位数的编号(比如“001”)并捕获。
s/.../.../:  替换命令,将匹配到的模式替换为指定格式。
$2-$1-$3_Good.txt:  使用捕获的内容重新排列并格式化文件名。这里$2、$1和$3分别对应城市名称、年份和编号。年份被裁剪为两位数,最后添加了固定的字符串“_Good”。

这条命令将会把形如“2024-北京-001.txt”的文件名改成“北京-24-001_Good.txt”

Amazing!就是这么方便,如果你有很多个文件,只要写好正则表达式进行替换,即可快速批量修改文件名称。

希望这篇博客文章能帮助你更好地理解和使用Linux中的批量重命名功能!如果你有任何问题或需要更多的帮助,请私信联系。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐