コマンドを実行find
して、特定のテキストの合計出現数を調べようとしています。また、別の検索コマンドを使用して、このテキストを含むファイルの数を取得しようとしています。
私が今持っているのはこのコマンドです。
find . -name "*.txt" | xargs grep -i "abc"
find
これにより、テキスト abc などを含むすべてのファイルが表示されます。取得するコマンドを1 つまたは 2 つ取得したい
- abcが出現した合計回数
- abc を含むファイルの総数。
grep(1)
あなたが望むことをするためにもっと多くのオプションを使う必要があります:
発生する合計回数については、1行に2回以上あるabc
ケースに注意する必要があります。abc
find . -name '*.txt' -print0 | xargs -0 grep -o -i abc | wc -l
を含むファイルの総数については、1つのファイルに2回以上abc
含まれる場合に注意する必要があります。abc
find . -name '*.txt' -print0 | xargs -0 grep -l -i abc | wc -l
マンページからgrep(1)
:
-l, --files-with-matches
Suppress normal output; instead print the name of each
input file from which output would normally have been
printed. The scanning will stop on the first match.
(-l is specified by POSIX.)
と
-o, --only-matching
Print only the matched (non-empty) parts of a matching
line, with each such part on a separate output line.