管道到另一个命令时的命令输出

use*_*647 2 pipe find xargs shell-script

我正在运行一个命令,它对某些文件进行快速校验和,就像这样

find / -type f -ctime +30 -mtime +30 -atime +30 -exec md5sum {} \; | xargs -P 4
Run Code Online (Sandbox Code Playgroud)

我正在尝试并行运行它

xargs -P 4
Run Code Online (Sandbox Code Playgroud)

现在,当我单独运行 find 命令时,我会看到每个文件都在校验和的输出。但是当我通过管道将它传输到 xargs 时,我不再看到 find 命令的输出。

有没有办法在将 find 传送到另一个命令时看到它的输出?

Dan*_*ite 6

你要这个:

find / -type f -ctime +30 -mtime +30 -atime +30 -print0 | xargs -0 -P 4 md5sum
Run Code Online (Sandbox Code Playgroud)

您希望将文件列表输入 md5sum 命令。这是通过find / | xargs md5sum. 然后你不想担心文件名中的疯狂字符(空格、换行符等),所以我们使用-print0for find 和-0for xargs。