有没有办法对子文件夹中的所有文件进行 md5sum?

Is there a way of making an md5sum of all files in subfolders?

我有几个电报数据导出,我想计算所有文件的 md5 和 sha256 哈希,但它只计算根目录中的那些

$ md5sum `ls` > hash.md5

md5sum: chats: Is a directory
md5sum: css: Is a directory
md5sum: images: Is a directory
md5sum: js: Is a directory
md5sum: lists: Is a directory
md5sum: profile_pictures: Is a directory

这在输出文件中

7e315ce28aa2f6474e69a7b7da2b5886  export_results.html
66281ec07a2c942f50938f93b47ad404  hash.md5
da5e2fde21c3e7bbbdb08a4686c3d936  ID.txt

有办法把这样的东西弄出来吗?

5750125fe13943f6b265505b25828400  js/script.js

对不起我的英语

与bash:

shopt -s globstar
md5sum ** >/tmp/hash.md5

忽略此类错误:md5sum: foobar: Is a directory

来自man bash

globstar: If set, the pattern ** used in a pathname expansion context will match all files and zero or more directories and subdirectories. If the pattern is followed by a /, only directories and subdirectories match.

或者,您可以使用 find-exec 选项:

find topdir -type f -exec md5sum {} + > MD5SUMS

topdir 替换为实际的目录名称,如果您想在当前目录(及其子目录,如果有的话)上工作,则将其删除。这只会计算常规文件的校验和(因此,不会出现“md5sum: something: Is a directory”错误),并且不会受到“参数列表的影响太长”问题。

一个有帮助但可能不会默认安装的工具是 hashdeephashdeep 直接做并且有更多的优势,例如二进制也适用于 Windows。

您的问题将使用 hashdeep 和以下命令来回答:

hashdeep -c md5,sha256 -r -o f -l . > hash.md5

一条命令计算所有子目录下所有文件的md5和sha256

由于文件的缓存效应,同时创建 md5 和 sha256 可能会更快。此外,该命令还有一个使用多线程的选项,这可以使用 multi-core 个 CPU 和快速磁盘来加快任务速度。