find
特定のテキスト文字列の総発生回数とそのテキスト文字列を含むファイル数を見つけるためのコマンドを実行しようとしています。
今私が持っているのはこのコマンドです。
find . -name "*.txt" | xargs grep -i "abc"
「abc」というテキストを含むすべての「* .txt」ファイルを報告します。 1つまたは2つの検索コマンドをインポートしたいと思います。
- abcの総発生回数
- abc を含むファイルの総数。
ベストアンサー1
質問1の場合は、次のようにできます。
find . -name "*.txt" | xargs grep -i "abc" | wc -l
合計一致回数を計算します。アルファベットすべてのテキストファイルで。
質問2の場合、次のように考えました。
find . -name "*.txt" -exec grep -i "abc" {} + | cut -d: -f1 | sort | uniq | wc -l
これは一致リストから一意のファイル名を取得して数を数えます(ソートは不要です)。
Miracle173が指摘したように、grep
「ファイルごとに一度一致」フラグを使用すると、コマンドを次のように短縮できます。
find . -name "*.txt" -exec grep -il "abc" {} + | wc -l