连接find -print0和xargs -0

时间:2014-08-31 21:31:14

标签: bash find xargs

预计

find参数-print0xargs参数-0可以协同工作。 man的{​​{1}}页说:

  

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

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

find

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

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

如果找不到目录,find -type d -name ... -print0 | xargs -0 du -sh 会在没有参数的情况下调用xargsdu会假设du

P.S。我知道.的{​​{1}}参数,我只想正确连接-execfind

1 个答案:

答案 0 :(得分:5)

GNU xargs具有以下选项:

  --no-run-if-empty
   -r     
     

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