2

我正在寻找的是一种以自动方式合并两个 md5 文件(我们称它们为a.md5b.md5)内容的方法。 理想情况下,我想从 bash 脚本中执行此操作,但我愿意探索替代方案。

a.md5通过以下方式生成:

cd a && find . -type f -print0 | xargs -0 md5sum > ../a.md5

其中文件夹a中有许多文件和目录。从另一个文件夹b,我同样生成b.md5.
以下是 .md5 文件内容的片段:

8f56e29ec16b2d59949c4a95b5607574  ./usr/share/man/man1/infocmp.1.gz
f245d527f4dd1fabab719b64414dccf7  ./usr/share/man/man1/clear.1.gz
c0ae88d29fc406c937c3f64511fa1ab0  ./usr/share/man/man1/modeline2fb.1
3b83017b7acd38a553c3132a0ccb1fd8  ./usr/share/man/man1/fbset.1
83530bf6b1a19ca69022536e7ca810b5  ./usr/share/man/man1/sqlite3.1

稍后,文件夹a将添加新文件(例如日志文件),然后被文件夹覆盖b,因此文件夹的所有唯一文件ab都存在,并且对于所有冲突,文件 froma被替换为文件从b.

同样,我想合并 and 的内容,a.md5以便b.md5在任何冲突中,该b.md5值都会替换a.md5特定文件的值;但是,由于在合并之前添加了一些我不希望在结果中出现的文件,因此我不能简单地重新计算一个新的 md5 文件。

作为文件注释,为上述需求提供一些上下文,a并且b每个都是嵌入式 linux 文件系统的内容;的内容a被编程到一个干净的文件系统中,而 的内容b在运行时被解压缩到文件系统中。md5 的目标是验证内容是否已正确部署,并忽略运行时由各种事物生成的文件。我将在我的 PC 上生成 md5,并在md5sum -c嵌入式系统上进行。

如上所述,一个 bash 脚本将是理想的,但我愿意接受其他建议,只要该过程可以自动化。

4

2 回答 2

1

一种可能的方式:您可以sort -k2同时使用列表和使用join -1 2 -2 2来合并 a.md5 和 b.md5。最后,您应该删除两个位置中存在的文件的重复信息,sed应该能够做到这一点。

于 2012-10-05T19:17:54.070 回答
0

这个怎么样:

cat a.md5 b.md5|sort|uniq
于 2012-10-09T19:30:19.610 回答