ファイル内容内に特定のテキスト文字列を含むすべてのファイルを見つけるにはどうすればよいですか?
以下は機能しません。システム内のすべてのファイルが表示されるようです。
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-dir
dirsとそれに一致するすべてのディレクトリが除外されます。dir1/
dir2/
*.dst/
grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/search/' -e "pattern"
これは私にとって非常にうまく機能し、あなたとほぼ同じ目的を達成します。
その他のオプションについては、man grep
。