内容が特定の正規表現と一致するファイルをディレクトリ(およびサブディレクトリ)から検索し、一致する各ファイルについて、そのファイル内の正規表現が一致する回数を一覧表示したいと思います。
たとえば、ファイルが次のような場合
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