EmmaV Asked: 2019-01-20 04:01:50 +0800 CST2019-01-20 04:01:50 +0800 CST 2019-01-20 04:01:50 +0800 CST 将 pv 与 find -exec 一起使用 772 我使用以下命令来验证 ~700 GiB 的备份文件: $ find -type f -exec md5sum {} + | sort > ~/checksums 这需要很多小时,所以我想集成pv到命令中以显示进度。 我可以这样做: $ find -type f -exec pv {} + | md5sum 但它会连接所有文件,导致只有一个校验和。 那么我怎么能在最后包含pv并仍然得到一个充满校验和的文本文件呢? find checksum 1 个回答 Voted Best Answer Kusalananda 2019-01-20T04:05:31+08:002019-01-20T04:05:31+08:00 您的第一个命令根本不应该能够运行,因为您不能-exec像那样使用管道(这显然是原始问题中的错字)。 反而: find . -type f -exec md5sum {} + | sort -o ~/checksums 或者,与pv, find . -type f -exec md5sum {} + | pv | sort -o ~/checksums 在上述两种情况下,md5sum将使用尽可能多的路径名批量调用。 sort将获取find(即 的输出md5sum)的输出并将其排序到给定的文件名中。第二个变体在和pv之间额外插入。findsort 您不能将管道-exec pv {} | md5sum用于单个文件,因为管道需要嵌入到您-exec为每个文件调用的内联 shell 脚本中。但即使是正确的-exec sh -c 'pv "$1" | md5sum' sh {} \;也会从生成的输出中丢弃文件名md5sum,因此也不能使用。该pv实用程序的作用类似于cat.
您的第一个命令根本不应该能够运行,因为您不能
-exec
像那样使用管道(这显然是原始问题中的错字)。反而:
或者,与
pv
,在上述两种情况下,
md5sum
将使用尽可能多的路径名批量调用。sort
将获取find
(即 的输出md5sum
)的输出并将其排序到给定的文件名中。第二个变体在和pv
之间额外插入。find
sort
您不能将管道
-exec pv {} | md5sum
用于单个文件,因为管道需要嵌入到您-exec
为每个文件调用的内联 shell 脚本中。但即使是正确的-exec sh -c 'pv "$1" | md5sum' sh {} \;
也会从生成的输出中丢弃文件名md5sum
,因此也不能使用。该pv
实用程序的作用类似于cat
.