Linux で特定のテキスト (文字列) を含むすべてのファイルを検索しますか? 質問する

Linux で特定のテキスト (文字列) を含むすべてのファイルを検索しますか? 質問する

ファイル内容内に特定のテキスト文字列を含むすべてのファイルを見つけるにはどうすればよいですか?

以下は機能しません。システム内のすべてのファイルが表示されるようです。

find / -type f -exec grep -H 'text-to-find-here' {} \;

ベストアンサー1

以下をせよ:

grep -Rnw '/path/to/somewhere/' -e 'pattern'
  • -rまたは-R再帰的である。-R全体を検索するために使用する。
  • -nは行番号であり、
  • -w単語全体に一致することを意味します。
  • -l(小文字の L) を追加すると、一致するファイルのファイル名のみを指定できます。
  • -e検索中に使用されるパターンです

これらに加えて、、--excludeフラグ--include--exclude-dir使用して効率的な検索を行うこともできます。

  • これにより、拡張子が .c または .h のファイルのみが検索されます。

    grep --include=\*.{c,h} -rnw '/path/to/somewhere/' -e "pattern"
    
  • これにより、.o 拡張子で終わるすべてのファイルの検索が除外されます。

    grep --exclude=\*.o -rnw '/path/to/somewhere/' -e "pattern"
    
  • ディレクトリの場合、パラメータを使用して 1 つ以上のディレクトリを除外することができます。たとえば、次の例では--exclude-dirdirsとそれに一致するすべてのディレクトリが除外されますdir1/dir2/*.dst/

    grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/search/' -e "pattern"
    

これは私にとって非常にうまく機能し、あなたとほぼ同じ目的を達成します。

その他のオプションについては、man grep

おすすめ記事