为目录中的每个文件生成单独的 .md5 文件,同时跳过现有的文件

为目录中的每个文件生成单独的 .md5 文件,同时跳过现有的文件

我有 4TB 的数百万个文件。我认为如果我可以为每个文件生成一个 .md5 文件,那就太好了。

我读 为目录中的每个 .fastq 文件生成单独的 .md5 文件? 并进行修改,使其为每个单独的文件生成一个单独的 .md5。

说:查找。-type f -name“*”-exec sh -c“md5sum {} > {}.md5”\;

但是正如我所说,我有 4TB 的数百万个文件,该命令可能无法在 2 天内完成,因此我必须关闭电脑。

当恢复时,我希望上述命令可以跳过那些已经有现有.md5 文件(即那些计算过的文件)。

如何做到这一点?当然是递归方式。

谢谢。

答案1

不需要为.md5每个文件创建一个文件(“数百万个文件”),使用数百万个磁盘簇和数百万个 inode,而是将.md5所有文件的签名放在一个大文件中(如果愿意,可以稍后再拆分)(阅读man find;man xargs):

find . -type f \! -name '*.md5' -print0 | xargs -0 md5sum > md5sum.out
#   Separate filenames with \000^^^^^^^          ^ in case some have spaces
#              ^^^^^^^^^^^^^^^^ but NOT *.md5 files
#      ^^^^^^^ each file

相关内容