別のコマンドにパイプされたときのコマンドの出力

別のコマンドにパイプされたときのコマンドの出力

以下のように、いくつかのファイルのクイックチェックサムを実行するコマンドを実行しています。

find / -type f -ctime +30 -mtime +30 -atime +30 -exec md5sum {} \; | xargs -P 4

並列に実行しようとしています。

xargs -P 4

findコマンドを個別に実行すると、各ファイルの出力がチェックサムされることがわかります。ただし、xargs にパイプすると find コマンドの出力は表示されなくなります。

別のコマンドにパイプするときにfindの出力を見る方法はありますか?

答え1

あなたはこれが欲しい:

find / -type f -ctime +30 -mtime +30 -atime +30 -print0 | xargs -0 -P 4 md5sum

md5sumコマンドにファイルのリストを入力しようとしています。これはで行われますfind / | xargs md5sum。これにより、ファイル名に奇妙な文字(スペース、改行など)が含まれていることを心配する必要がないため、-print0findと-0xargsに使用します。

答え2

私はあなたの注文を受け入れました

$ find / -type f -ctime +30 -mtime +30 -atime +30 -exec md5sum {} \; | xargs -P 4

そしてstdoutでエコーしながらリダイレクトしたいと思います。これを行う1つの方法はTシャツを使用することです。

$ man tee | head
NAME
   tee - read from standard input and write to standard output and files

したがって、teeは確かに標準出力(チェーンを継続するために必要なもの)に書き、私たちが選択したファイルにも書き込みます。すごい!ところでどんな文書?

この回答のアイデアをいただきありがとうございますhttps://stackoverflow.com/a/9405342、私達は利用できます

/dev/tty

リダイレクトのためにコンソールに印刷されます!

したがって、完全なコマンドの場合は次のようになります。

$ find / -type f -ctime +30 -mtime +30 -atime +30 -exec md5sum {} \; | tee /dev/tty | xargs -P 4

これにより、画面の下にスクロールする素晴らしいテキストが表示され始めます。 :)

関連情報