次のコマンドを使用して、バックアップされたファイルの〜700 GiB)を確認します。
$ find -type f -exec md5sum {} + | sort > ~/checksums
これには何時間もかかるので、pv
をコマンドに統合して進行状況を表示したいと思います。
私はこれを行うことができます:
$ find -type f -exec pv {} + | md5sum
ただし、すべてのファイルが連結されるため、チェックサムは1つだけになります。
では、どうすればpv
を含めても、最後にチェックサムでいっぱいのテキストファイルを取得できますか?
そのような-exec
でパイプを使用できないため、最初のコマンドはまったく実行できないはずです(これは、 元の質問 のタイプミスだったようです)。
代わりに:
find . -type f -exec md5sum {} + | sort -o ~/checksums
または、pv
を使用して、
find . -type f -exec md5sum {} + | pv | sort -o ~/checksums
上記の両方で、md5sum
は、バッチで可能な限り多くのパス名を使用して呼び出されます。 sort
は、find
の出力(md5sum
の出力)を取得し、指定されたファイル名に並べ替えます。 2番目のバリエーションでは、pv
とfind
の間にsort
を追加で挿入します。
パイプを呼び出すインラインシェルスクリプトに埋め込む必要があるため、個々のファイルに-exec pv {} | md5sum
を使用することはできません。ファイルごとに-exec
。ただし、正しい-exec sh -c 'pv "$1" | md5sum' sh {} \;
でさえ、生成されたmd5sum
出力からファイル名を破棄するため、これも使用できません。 pv
ユーティリティは、cat
のドロップイン置換のように機能します。