查找-print0 | xargs -0 grep 在 Ubuntu 10.04 上未按預期工作

查找-print0 | xargs -0 grep 在 Ubuntu 10.04 上未按預期工作

我有一個有點奇怪的問題。

如果我運行:

find . -iname '*.php' -o -iname '*.pl' -o -iname '*.html' | xargs grep -i users

我收到包含空格的文件名的大量錯誤,但也有一些文件匹配。

但是,如果我嘗試以下操作,以便正確處理帶有空格的檔案名,則不會返回任何匹配項:

find . -iname '*.php' -o -iname '*.pl' -o -iname '*.html' -print0 | xargs -0 grep -i users

我究竟做錯了什麼?第二個命令應該至少返回與第一個命令相同的匹配文件,但我沒有得到任何匹配。

答案1

答案是:

find . \( -iname '*.php' -o -iname '*.pl' -o -iname '*.html' \) -print0 | xargs -r0 grep -i users

這有效。我以前沒見過,但是有位同事告訴我的。

答案2

你不需要 print0 和 xargs,這個功能已經內建在 find 中:

find . -iname "*.php" -o -iname "*.pl" -o -iname "*.html" -exec grep -i users {} + 

相關內容