文字列「hello」をすべてのファイル内で検索するようにするにはどうすればよいですか?
私は次のことを試しましたが、うまくいきません:
sudo grep "hello" | find / -name "*" 2>/dev/null
他のアイデアはありますか?
ありがとうございました。
たぶんこれ?
sudo cd / && grep -rn "hello" *
編集: もちろん、「n」オプションは必要ありません。単に行番号を表示するだけでいいと思います。'r' オプションは、ディレクトリ内で再帰的な検索を実行するように grep に指示します。
使用する
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
。
これ?
find . -exec grep -H "hello" {} \;