Perl 非常适合这项任务,因为我认为许多其他语言也是如此。但是,如果您已经了解 Perl,那么这对您来说将是一项非常简单的工作。
将File::Find::Rule视为一种在目录树中查找和处理大量文件的简单方法。您可以设置规则,仅包含符合您的特定要求的文件,同时绕过所有其他文件。您还可以为那些符合您的规则的文件设置处理程序。
在您的处理程序中,您可以进行您认为必要的重命名。
如果文件都在一个目录中,并且不需要确定哪些文件符合条件的标准(或规则)列表,则可以只使用 opendir 和 readdir 以及文件检查,例如 -f。
一旦您发布了一些显示您遇到问题的代码以及有关代码的具体问题,我们实际上可以提供更具体的帮助。如您所问,您的问题过于宽泛,无法得到具体答案。
更新: 昨晚我做了一些工作来查看 File::Find。它遍历了我的 Windows 计算机上数千个目录中的大约 100,000 个文件,并且花费了大约两分钟。 sub wanted
只是做了一个简单的文件和目录计数,所以我几乎可以只测试 File::Find 的效率。在第一个回调想要脚本输出一个“开始”。我这样做的原因是因为从历史上看,我发现 File::Find 在具有大型文件系统的 Windows 上实际启动它的回调循环需要很长时间。
然后,我在我的 Linux 计算机上以类似大小的文件结构运行相同的脚本。
我发现在 Strawberry Perl 5.12.2 和 1.15 的 $File::Find::VERSION 下,我之前在评论中提到的 bug 似乎已经被清除了。想要的回调几乎立即开始,而当我使用 5.8.x 使用它时,回调需要很长时间才能启动。这当然是在窗户上。在 Linux 上,我从来没有遇到过问题。
然而,作为比较,在我的 Windows 系统上运行类似复杂目录树的 File::Find 测试脚本在“首次运行”时遍历 100,000 个文件的时间大约是我的 Linux 系统上的十倍。随后的运行差异更加显着,因为 Linux 可能正在执行一些文件系统缓存。
无论如何,我建议如果您确实使用 File::Find 或 File::Find::Rule,请确保您正在运行最新的 Perl(5.12.2 或 5.14.1)以及 File::查找更新的 Perl 附带的版本。