[英]Perl script or module like version-control for files in a directory?
我需要更新Oracle的RDBMS二进制文件。 我正在寻找Perl脚本或模块,该脚本或模块将向我显示哪些文件已更改(新文件,已删除文件,已修改文件等)。 我计划在修补之前和之后运行脚本,然后比较结果。
我将不胜感激,因为Google对于“ perl比较”短语返回的结果过多。
最好的问候,斯科蒂
也许您可以使用git来避免麻烦。 在要查看此类数据的目录中初始化一个仓库,提交更改,然后使用差异比较它们。
我知道这可能不适用,也许git add或commit将花费很长时间,但是如果可能的话,git将免费为您提供很多信息。
如果您真的想使用perl,也许您有兴趣检查File :: Find模块(walk函数)并使用stat从文件中获取此统计信息。
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相同(对于我的目的足够安全)时不重新计算校验和来跟踪文件标识(用于重命名), Data::Dumper
加载上次结果并保存新结果,而Text::Diff
比较旧数据和新数据的文本文件版本并打印差异作为报告。 如果要查看Dumper
输出,请考虑设置以下选项以提高可读性:
$Data::Dumper::Terse = 1;
$Data::Dumper::Indent = 1;
$Data::Dumper::Sortkeys = 1;
您可以创建文件列表和每个文件的校验和,然后对它们运行diff
吗?
例如,如果您有必要的命令行工具,则可以运行
find [directory] -print0 | sort -z | xargs -0 md5sum
在命令行中,比较补丁前后的结果文件。 缺少的行对应于已删除的文件,多余的行对应于新的文件,而已更改的校验和对应于已修改的文件。
如果要使用perl,则可以使用File :: Find和Digest :: MD5编写类似的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.