如何计算目录的 MD5 校验和?

新手上路,请多包涵

我需要为放置在目录和所有子目录下的特定类型的所有文件(例如 *.py )计算汇总 MD5 校验和。

最好的方法是什么?


提议的解决方案非常好,但这并不是我所需要的。我正在寻找一种解决方案来获取 单个摘要 校验和,该校验和将唯一地标识整个目录 - 包括其所有子目录的内容。

原文由 victorz 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 823
2 个回答
find /path/to/dir/ -type f -name "*.py" -exec md5sum {} + | awk '{print $1}' | sort | md5sum

find 命令列出所有以 .py 结尾的文件。为每个 .py 文件计算 MD5 哈希值。 AWK 用于挑选 MD5 哈希值(忽略文件名,文件名可能不是唯一的)。对 MD5 哈希值进行排序。然后返回这个排序列表的 MD5 哈希值。

我通过复制测试目录对此进行了测试:

 rsync -a ~/pybin/ ~/pybin2/

我重命名了 ~/pybin2 中的一些文件。

find...md5sum 命令为两个目录返回相同的输出。

 2bcf49a4d19ef9abd284311108d626f1  -

为了考虑文件布局(路径),如果文件被重命名或移动,校验和会发生变化,可以简化命令:

 find /path/to/dir/ -type f -name "*.py" -exec md5sum {} + | md5sum

在带有 md5 的 macOS 上:

 find /path/to/dir/ -type f -name "*.py" -exec md5 {} + | md5

原文由 unutbu 发布,翻译遵循 CC BY-SA 4.0 许可协议

即时创建一个 tar 存档文件并将其通过管道传输到 md5sum

 tar c dir | md5sum

这会产生一个单一的 MD5 哈希值,该值对于您的文件和子目录设置应该是唯一的。没有在磁盘上创建文件。

原文由 ire_and_curses 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题