在 GNU/Linux 中有几种不同的方法来执行文件的批量重命名(是的,批量重命名是可能的!)。 还有一个 perl 脚本可以重命名文件的扩展名,请参阅第 19 章。
以下是使用 mmv、rename(一个 perl 脚本)或一些 bash shell 脚本命令来执行文件批量重命名的三种方法。
mmv 是一个批量移动/复制/重命名工具,它使用标准通配符来执行其功能。
mmv 的手册页相当难懂,我对这个工具的理解有限。 然而,mmv 支持一些标准通配符。
根据手册,“;”通配符对于匹配目录树中任何深度的文件非常有用(即它将递归地深入到当前目录之下)。
mmv \*.JPG \#1.jpg
第一个模式匹配任何带有“.JPG”的文件,并将每个文件(“#1”匹配第一个通配符)重命名为“.jpg”。
每次使用 \(通配符) 时,都可以使用 #x 来获取该通配符。 其中 x 是一个从 1 开始的正数。
mmv 主页: 您可以在网络上这里找到 mmv。
另请注意,与 mmv 一起使用的某些选项也适用于套件中的其他工具,这些工具包括 mcp(批量复制)、mad(将源文件的内容批量附加到目标名称)、mln(批量链接到源文件)。
提示:: Java 替代 mmv 的方案,可在 GNU/Linux 和 Windows 上运行,Esomaniac
rename 是一个 perl 脚本,可以用于根据正则表达式批量重命名文件。
rename 's/\.JPG$/.jpg/' *.JPG
查找 rename: 您可以从不同的地方获取 rename。 我建议尝试 CPAN 搜索站点,我在这里找到了该脚本 Rename Script Version 1.4
Bash 脚本是重命名文件的一种方法。 您可以开发一组指令(一个脚本)来重命名文件。 如果您没有 mmv 或 rename...,脚本非常有用。
for i in *.JPG; do mv $i `basename $i JPG`jpg; done
请注意,上面的脚本来自 usenet 帖子。 很遗憾,我不知道作者的名字。
第一行表示查找所有带有“.JPG”扩展名的文件(仅限大写,因为 UNIX 系统区分大小写)。
第二行使用 basename(输入 man basename 了解更多详情)和 '$i' 参数。 '$i' 是一个包含匹配文件名称的字符串。 行的下一部分从末尾删除 JPG 扩展名,并为每个文件添加 jpg 扩展名。 命令 mv 在输出上运行。
for i in *.JPG; do mv $i ${i%%.JPG}.jpg; done
上面的脚本使用内置的 bash 函数重命名文件。 有关 bash 脚本的更多信息,您可能想查看由 Mendel Cooper撰写的高级 bash 脚本编程指南。