7.3. 批量重命名/复制/链接工具

在 GNU/Linux 中,有几种不同的方法可以执行批量文件重命名(是的,批量重命名是可能的!)。还有一个 perl 脚本可以重命名文件扩展名,请参阅第 19 章

以下是使用命令 mmvrename(一个 perl 脚本)或一些 bash shell 脚本执行批量文件重命名的三种方法。

mmv

mmv 是一个批量移动/复制/重命名工具,它使用标准通配符来执行其功能。

mmv 的手册页相当难以理解,我对这个工具的理解也有限。但是 mmv 支持一些标准通配符。

根据手册,“;” 通配符对于匹配目录树中任何深度的文件非常有用(即它将递归地进入当前目录的下级目录)。

下面显示了如何使用 mmv 的示例

mmv \*.JPG \#1.jpg 

第一个模式匹配任何以“.JPG”结尾的文件,并将每个文件重命名为“.jpg”(“#1”匹配第一个通配符)。

每次使用 \(通配符) 时,您都可以使用 #x 来获取该通配符。其中 x 是一个从 1 开始的正数。

Tipmmv 主页
 

您可以在网络上找到 mmv 这里。

另请注意,与 mmv 一起使用的某些选项也适用于该套件中的其他工具,这些工具包括 mcp(批量复制)、mad(将源文件的内容批量附加到目标名称)、mln(批量链接到源文件)。

Tip提示
 

mmvJava 替代品可在 GNU/Linux 和 Windows 上运行,Esomaniac

rename

rename 是一个 perl 脚本,可用于根据正则表达式批量重命名文件。

将所有“.JPG”文件重命名为“.jpg”的示例如下

rename 's/\.JPG$/.jpg/' *.JPG 

Note查找 rename
 

您可以从不同的地方获取 rename。我建议尝试 CPAN 搜索站点,我在这里找到了该脚本 Rename 脚本版本 1.4

Bash 脚本

Bash 脚本是重命名文件的一种方法。您可以开发一组指令(一个脚本)来重命名文件。如果您没有 mmvrename...,脚本非常有用

下面显示了一种方法

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 脚本指南