繁体   English   中英

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

[英]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::MD5stat通过在文件大小和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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM