2014-08-31 22 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  

如果標準輸入不包含任何非空白,不運行命令。通常,即使沒有輸入,該命令也會運行一次。