文字列「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" {} \;