grep -G '{string}' *. | wc -l
{string}
ディレクトリ全体の総数を示します。一方、wc -l *.
ファイルあたりの行あたりの数は提供されますが、{string}
私が興味のあるファイルごとの数は提供されません。私は、{string}
各ファイルの発生回数を個別に計算できる2つの組み合わせを探しています。
答え1
これgrep必要なオプションは次のとおりです-c
。
-氏
選択した行数のみを標準出力に書き込みます。
検索するネストされたディレクトリがある場合:
find /your_dir -type f -exec grep -cF '{string}' {} +
またはGNU Grep
(または他の実装)が利用可能な場合grep-r
再帰検索のために)をサポートします。
grep -rcF '{string}' your_dir
ディレクトリ内にサブディレクトリがない場合は簡単です。
grep -cF '{string}' your_dir/*
動作します。
さらに、-G
(GNU Grep
特定の)BRE
エンジンが有効になっており、これはデフォルトの選択であり、ERE
同様のタグ{
(エスケープされていない場合)を処理しません。-F
オプションの強制使用を検討してください。grep必要でない場合は、単純な文字列を検索するか、正規表現のメタ文字補間を無効にします。
答え2
grep
オプションは、-c
各ファイルに対して選択した行数を印刷します。
grep -c '{string}' *.
(オプション-G
(デフォルトの正規表現)はデフォルト値なので重複します.)
サンプルファイルの使用
file1
foo
bar
baz
foo
bar
file2
foo
bar
baz
foo
bar
foo
foo
bar
bar foo
baz
foo
bar
私は次のような結果を得ます。
$ fgrep -c foo file*
file1:2
file2:6
ファイル名パターンが1つのファイルにのみ一致する場合、grep
そのファイル名は印刷されません。これを防ぐには、-H
GNUがある場合はオプションを使用できますgrep
。
grep -cH '{string}' *.
(/dev/null
非標準オプションの代わりに追加すると、-H
添付ファイルの数が0として表示されます。)