8

文字列「hello」をすべてのファイル内で検索するようにするにはどうすればよいですか?

私は次のことを試しましたが、うまくいきません:

sudo grep "hello" | find / -name "*" 2>/dev/null

他のアイデアはありますか?

ありがとうございました。

4

3 に答える 3

28

たぶんこれ?

sudo cd / && grep -rn "hello" *

編集: もちろん、「n」オプションは必要ありません。単に行番号を表示するだけでいいと思います。'r' オプションは、ディレクトリ内で再帰的な検索を実行するように grep に指示します。

于 2012-06-25T10:09:00.077 に答える
11

使用する

grep -r 'pattern' /

grepサポートしている-r場合 (GNUはサポートしてgrepいます); 使用しない場合

find / -type f -exec grep 'pattern' {} +

findでサポート-execしている場合は+、それ以外の場合は使用してください

find / -type f -printf '%p\0' | xargs -0 grep 'pattern'

あなたfindがサポートし-printf、あなたxargsがサポートする場合-0、または

find / -type f -print0 | xargs -0 grep 'pattern'

あなたfindがサポートする場合のみ-print0、あなたxargsがサポートする場合-0。それ以外の場合はすべてフォールバックします

find / -type f | xargs grep 'pattern'

これは最大限の互換性がありますが、特定の異常なファイル名は grep に失敗し、細工されたファイル名はセキュリティ リスクをもたらす可能性があるという警告があります。

すべてのファイルを確実に検索するには、root である必要があることに注意して-iくださいgrep

于 2012-06-25T11:10:56.917 に答える
2

これ?

find . -exec grep -H "hello" {} \;
于 2012-06-25T10:15:59.560 に答える