我正在寻找的方法是以自动方式合并两个md5文件的内容(让我们称之为a.md5
和b.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
中的文件。
同样,我想合并b
和a.md5
的内容,以便在任何冲突中b.md5
值替换特定文件的b.md5
值;但是,由于在合并之前添加了我不希望在结果中添加的文件,因此我不能简单地重新计算新的md5文件。
作为提供上述需求上下文的文件说明,a.md5
和a
都是嵌入式linux文件系统的内容; b
的内容被编程到一个干净的文件系统上,a
的内容在运行时被解压缩到文件系统中。 md5的目标是验证内容已经部署而没有错误,并忽略在运行时由各种事物生成的文件。我将在我的PC上生成md5,并在嵌入式系统上执行b
。
如上所述,bash脚本是理想的,但只要流程可以自动化,我就会接受其他建议。
答案 0 :(得分:1)
一种可能的方式:您可以sort -k2
两个列表并使用join -1 2 -2 2
合并a.md5和b.md5。最后,您应该删除两个位置中存在的文件的重复信息,sed
应该能够这样做。
答案 1 :(得分:0)
这个怎么样:
cat a.md5 b.md5|sort|uniq