我需要更新Oracle的RDBMS二进制文件。我正在寻找perl脚本或模块,它将向我显示哪些文件已被更改(新的,删除的,修改的等)。我计划在修补之前和之后运行脚本,然后比较结果。
我将非常感谢您的回答,因为Google为“perl compare”短语返回了太多结果。
祝你好运, 斯科特
答案 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::MD5
和stat
以跟踪文件标识(用于重命名),方法是在文件大小和mtime相同时不重新计算校验和(对我的目的而言足够安全),{ {1}}加载上次结果并保存新结果,Data::Dumper
比较旧数据和新数据的文本文件版本,并将差异打印为报告。如果您想查看Text::Diff
输出,请考虑设置以下选项以提高可读性:
Dumper
答案 2 :(得分:1)
您是否可以为每个文件创建文件列表和校验和,然后在其上运行diff
?
例如,如果您拥有必要的命令行工具,则可以运行
find [directory] -print0 | sort -z | xargs -0 md5sum
在命令行中,比较补丁前后的结果文件。缺少的行对应于已删除的文件,额外的行对应于新文件,更改的校验和对应于已修改的文件。
如果你想使用perl,你可以用File :: Find和Digest :: MD5编写类似的内容。