我必须将同一文件的80个副本的md5sums进行比较,并报告不匹配时的失败。如何在bash中有效地做到这一点?我正在寻找一个优雅的算法来做这件事。
最佳答案
md5sum FILES > MD5SUMS.md5
cut -c1-32 < MD5SUMS.md5 | sort | uniq -c | sort -n
将返回如下内容:
1 485fd876eef8e941fcd6fc19643e5e59
1 585fd876eef8e941fcd6fc19643e5e59
5 385fd876eef8e941fcd6fc19643e5e59
阅读:5个文件有相同的校验和,另外两个文件有“单独”的校验和。我想,大多数人是对的,所以
| tail -1 | cut -c 9-
返回最后一行的校验和。现在过滤所有其他内容(并将各个部分组合在一起):
md5sum FILES > MD5SUMS.md5
grep -v "$(cut -c1-32 < MD5SUMS.md5 | sort | uniq -c | sort -n | tail -1 | cut -c 9-)" MD5SUMS.md5 | cut -c35-
这将打印非多数文件的文件名。
关于linux - 我如何在bash中相互比较80个md5sums,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9284232/