find
参数-print0
和xargs
参数-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
会在没有参数的情况下调用xargs
而du
会假设du
P.S。我知道.
的{{1}}参数,我只想正确连接-exec
和find
。
答案 0 :(得分:5)
GNU xargs
具有以下选项:
--no-run-if-empty -r
如果标准输入不包含任何非空白,请不要运行该命令。通常,即使没有输入,命令也会运行一次。