在linux中合​​并两个md5文件

时间:2012-10-05 19:07:09

标签: linux bash merge md5

我正在寻找的方法是以自动方式合并两个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覆盖,因此文件夹{{1}的所有唯一文件都被覆盖}和a存在,对于所有冲突,来自b的文件将替换为a中的文件。

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

作为提供上述需求上下文的文件说明,a.md5a都是嵌入式linux文件系统的内容; b的内容被编程到一个干净的文件系统上,a的内容在运行时被解压缩到文件系统中。 md5的目标是验证内容已经部署而没有错误,并忽略在运行时由各种事物生成的文件。我将在我的PC上生成md5,并在嵌入式系统上执行b

如上所述,bash脚本是理想的,但只要流程可以自动化,我就会接受其他建议。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

这个怎么样:

cat a.md5 b.md5|sort|uniq