通过检查每个目录中所有文件之间的哈希值来比较两个目录,并使用 sha256 哈希值确定两个目录是否彼此 ==
答案1
您可以使用hash
函数和命令来比较两个目录,例如:
cd dir1; sha256sum * >../hash_file
cd ../dir2; sha256sum -c ../hash_file >/dev/null 2>&1
EXITCODE=$?
退出代码 0 表示目录中的文件相同。如果您有子目录,这可能不太有效
答案2
如果您想递归地将目录中每个文件的内容包含在单个哈希中,您可以使用find
查找所有普通文件,并使用 execcat
将它们连接起来,并将其通过管道传输sha256sum
并保存到文件中,如下所示:
find dir1 -type f -exec cat '{}' + | sha256sum > hash1
find dir2 -type f -exec cat '{}' + | sha256sum > hash2
diff -q hash1 hash2