比较 zip 文件

比较 zip 文件

我们需要比较我们拥有的 2 个 .zip 文件中的每一个文件的内容。每个 .zip 文件都有不同的文件扩展名。每个 .zip 文件还包含另一个 .zip 文件和几个子目录。

我们没有能力使用zipcomp实用程序。我们如何比较 2 个 zip 文件中的所有文件,并将相同的文件显示在matching.txt输出文件中,将不相同的文件显示在non-matching.txt输出文件中?

整个想法是找出由一次构建生成的 zip 文件中的哪些文件在之后的另一次构建运行中发生了更改/修改。

答案1

命令unzip -lv file.zip打印文件的内容file.zip,包括存档中每个文件的 CRC32 校验码(unzipWindows 系统请从http://info-zip.org或者Sourceforge)。

有了这个,你可以简单地使用

unzip -lv file1.zip > list1.txt
unzip -lv file2.zip > list2.txt

并使用 或 之类的实用程序比较list1.txtvs的内容。如果您想要更自动化的方法,您可以编写简单的 Perl 或 Python 脚本来比较这些列表文件(提示 - 对 打印的每个文件 CRC32 使用 Perl 哈希或 Python 字典。list2.txtdiffdiffuseunzip -lv

答案2

您可以使用和自定义开源工具comp_zip这里这里,它比较两个 Zip 档案,而无需写入任何额外文件。所有操作都在内存中完成。在 Linux 上,您需要做的就是gprbuild -P zipada comp_zip。源代码位于文件中tools/comp_zip.adb

相关内容