连接find -print0和xargs -0

Vyt*_*nis 3 bash find xargs

find参数-print0xargs参数-0应该一起工作.man页面find说:

-print0 ....此选项对应于xargs的-0选项.

好吧,只要find产生一些输出,它们就能为我工作.当find生成NO输出时,如何让它工作?

find /dev /sys /usr -maxdepth 0 -print0 | xargs -0 -n1 | wc -l    # 3 - OK
find /dev /sys -maxdepth 0 -print0 | xargs -0 -n1 | wc -l         # 2 - OK
find /dev -maxdepth 0 -print0 | xargs -0 -n1 | wc -l              # 1 - OK
find /dev -maxdepth 0 -name "x" -print0 | xargs -0 -n1 | wc -l    # 1 instead of 0 - Fail
Run Code Online (Sandbox Code Playgroud)

例如,可能会发生一些不好的事情,

find -type d -name ... -print0 | xargs -0 du -sh
Run Code Online (Sandbox Code Playgroud)

当没有找到目录时,不带参数xargs调用dudu假设.

PS我知道-exec参数find,我只想连接findxargs正确.

cho*_*oba 5

GNU xargs具有以下选项:

  --no-run-if-empty
   -r     
Run Code Online (Sandbox Code Playgroud)

如果标准输入不包含任何非空白,请不要运行该命令.通常,即使没有输入,命令也会运行一次.