【问题标题】:Is there a way of making an md5sum of all files in subfolders?有没有办法对子文件夹中的所有文件进行 md5sum 处理?
【发布时间】:2020-12-12 08:53:21
【问题描述】:

我有几个电报数据的导出,我想计算所有文件的 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 md5 sha256 md5sum


    【解决方案1】:

    使用 bash:

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

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

    来自man bash

    globstar:如果设置,路径名扩展上下文中使用的模式 ** 将匹配所有文件以及零个或多个目录和子目录。如果模式后跟 /,则只有目录和子目录匹配。

    【讨论】:

    • 不要使用**!但我假设** 受shell 命令行限制,如果文件名过多或过长可能会产生可怕的“参数过多”错误。仅供参考。祝大家好运!
    • @shellter:是的,它可能会导致“参数列表太长”或类似的东西。
    【解决方案2】:

    hashdeep 是一个有帮助但可能不会默认安装的工具。 hashdeep 直接执行它并具有更多优势,例如二进制文件也可用于 Windows。

    您的问题将通过以下命令使用hashdeep 得到回答:

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

    这使用一个命令计算所有子目录中所有文件的 md5 和 sha256。

    由于文件的缓存效果,一起创建 md5 和 sha256 可能会更快。此外,该命令还可以选择使用多线程,这可以使用多核 CPU 和快速磁盘加快任务。

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

      • { find . -maxdepth 1 -type f -execdir md5sum {} +;} >md5sums.txt
      • @LéaGris 为什么是-maxdepth 1? OP 也想计算子目录中的校验和。大括号的意义何在?
      • 对,删除-maxdepth 1-execdir 保持不变,因为它允许一次计算同一目录中所有文件的 md5sums。
      • @LéaGris -execdir 保持不变,因为它允许一次计算同一目录中所有文件的 md5sums-exec 也是如此。我没明白你的意思。
      • 你是对的,它只是cd 到目录,然后将文件作为参数提供,这是一个惩罚,因为它将为每个目录运行md5sum,而不是为所有文件运行一次,如果它符合最大参数长度。
      猜你喜欢
      • 1970-01-01
      • 2016-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-05
      • 2011-03-12
      • 1970-01-01
      相关资源
      最近更新 更多