特定の正規表現に一致するすべてのファイルを一致の数とともにリストします。

特定の正規表現に一致するすべてのファイルを一致の数とともにリストします。

内容が特定の正規表現と一致するファイルをディレクトリ(およびサブディレクトリ)から検索し、一致する各ファイルについて、そのファイル内の正規表現が一致する回数を一覧表示したいと思います。

たとえば、ファイルが次のような場合

line1
line2
line3
linea
lineb

正規表現はでline\d、最初、2番目、3行目は正規表現と一致するため、番号3のファイルを見たいと思います。

このようなことをするにはどうすればよいですか?

ベストアンサー1

パターンに一致するファイルを繰り返し検索するにはfind PATH -name PATTERN- を参照してくださいman find。検索方法コンテンツfindマージするgrepファイルの数find … -exec grep PATTERN +。最後に、GNUには一致数を計算する/フラグgrepがあります。--count-c

$ cd "$(mktemp --directory)"
$ printf '%s\n' foo bar foo > first
$ printf '%s\n' bar foo bar > second
$ printf '%s\n' bar > third
$ find . -name '*r*' -exec grep --count foo {} +
./third:0
./first:2

おすすめ記事