在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中的批量重命名功能!如果你有任何问题或需要更多的帮助,请私信联系。