Linuxシステム全体をスキャンして、特定のテキスト文字列を含むすべてのファイルを検索する方法を探しています。わかりやすくするために、ファイル名ではなく、ファイル内のテキストを探しています。
これを行う方法を探していたときに、私はこのソリューションに2回遭遇しました。
find / -type f -exec grep -H 'text-to-find-here' {} \;
ただし、機能しません。システム内のすべてのファイルを表示するようです。
これは適切な方法に近いですか?そうでない場合、どうすればよいですか?ファイル内のテキスト文字列を検索するこの機能は、私が実行しているいくつかのプログラミングプロジェクトに非常に役立ちます。
-H
てください-l
(おそらくgrep
で置き換えfgrep
ます)。名前の特定のパターンを持つファイルを除外するにfind
は、より高度な方法で使用します。find
ただし、を使用することを学ぶ価値があります。ただman find
。
find … -exec <cmd> +
は入力が簡単で、よりも高速ですfind … -exec <cmd> \;
。これ<cmd>
は、任意の数のファイル名引数を受け入れる場合にのみ機能します。<cmd>
PythonまたはRubyスクリプトのように起動が遅い場合、実行時間の節約は特に大きくなります。
grep "pattern" path/*.txt
.
ものを1文字のワイルドカードとして解釈することに注意してください。私のアドバイスは、常にfgrepまたはegrepを使用することです。