2014-08-31 35 views
3

find参数-print0xargs参数-0预计将一起工作。 man页的find说:连接查找-print0和xargs -0

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

那么,只要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 

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

find -type d -name ... -print0 | xargs -0 du -sh 

当没有目录发现xargs调用du没有参数和du假定.

附:我知道-exec参数find,我只是想正确连接findxargs

回答

5

GNU xargs具有以下选项:

--no-run-if-empty 
    -r  

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