Linux:tools: find| xargs grep侷限性

參考http://www.cocoachina.com/articles/50268

有時我們執行find ./ -name "xxx"|xargs grep -rn "xxx"失效,無法顯示任何內容;

有可能的原因是:

1.文件權限

2.文件爲符號鏈接

3.文件路徑

關於文件路徑,包含空格或“-”或反斜槓的目錄,是問題所在. xargs按空格分割其輸出,並且還解釋引號,反斜槓,甚至_字符,因此文件或目錄名稱中的空格會導致它將不完整的文件名傳遞給grep

 

要解決此問題,請將find -print0與xargs -0結合使用,如下所示:

find . -name "xxx" -print0 2>/dev/null | xargs -0 grep -rn "xxx" 2>/dev/null

-print0選項告訴find使用二進制0字符分隔文件名,該字符不能出現在有效的文件名中.相應的-0選項告訴part使用相同的字符作爲分隔符,也不解釋引號和反斜槓.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章