Perl脚本或模块,如版本控制目录中的文件?

时间:2012-05-11 14:00:38

标签: perl module compare

我需要更新Oracle的RDBMS二进制文件。我正在寻找perl脚本或模块,它将向我显示哪些文件已被更改(新的,删除的,修改的等)。我计划在修补之前和之后运行脚本,然后比较结果。

我将非常感谢您的回答,因为Google为“perl compare”短语返回了太多结果。

祝你好运, 斯科特

3 个答案:

答案 0 :(得分:3)

也许你可以使用git并省去麻烦。在您想要查看此类数据的目录中创建一个repo,提交您的更改,然后使用diff来比较它们。

我知道这可能不适用,也许git add或commit需要很长时间,但如果可能的话,git会免费提供大量信息。

如果你真的想使用perl,也许你有兴趣检查File :: Find模块(walk函数)并使用stat从文件中获取这些统计信息。

答案 1 :(得分:2)

use strict;
use warnings;
use Path::Class;
use Digest::MD5;
use Data::Dumper; # Dumper
use Text::Diff; # diff

这就是我用于我的脚本的模块(用于跟踪目录中的ZIP / PDF / CHM并消除重复)。使用Path::Class::Dir->traverse遍历目录Digest::MD5stat以跟踪文件标识(用于重命名),方法是在文件大小和mtime相同时不重新计算校验和(对我的目的而言足够安全),{ {1}}加载上次结果并保存新结果,Data::Dumper比较旧数据和新数据的文本文件版本,并将差异打印为报告。如果您想查看Text::Diff输出,请考虑设置以下选项以提高可读性:

Dumper

答案 2 :(得分:1)

您是否可以为每个文件创建文件列表和校验和,然后在其上运行diff

例如,如果您拥有必要的命令行工具,则可以运行

find [directory] -print0 | sort -z | xargs -0 md5sum

在命令行中,比较补丁前后的结果文件。缺少的行对应于已删除的文件,额外的行对应于新文件,更改的校验和对应于已修改的文件。

如果你想使用perl,你可以用File :: Find和Digest :: MD5编写类似的内容。