SOでこれを見つけることができませんでした。ターミナルで次のコマンドを実行しました。
>> grep -Rl "curl" ./
これにより、キーワード curl が発生するファイルのリストが表示されます。ファイル数を数えたい。私が考えることができる最初の方法は、ターミナルに入った出力の行数を数えることです。どうやってやるの?
( line count ) スイッチをwc
使用して結果をパイプします。-l
grep -Rl "curl" ./ | wc -l
ここに EaterOfCode のコメントを答えとして入れます。
grep 自体にも -c フラグがあり、カウントを返すだけです
したがって、コマンドと出力は次のようになります。
$ grep -Rl "curl" ./ -c
24
編集:
この回答は短くなる可能性があるため、受け入れられた回答(を使用しているwc
)よりも優れているように見えるかもしれませんが。私はもうこれに同意しません。パイプで行数をカウントできることを覚えておくwc -l
と、他のプログラムでも使用できるため、はるかに便利ですgrep
。
最後の行が改行で終わっている場合は、「wc」にパイプする方が良いかもしれません(この場合、そうなることがわかっています)
ただし、最後の行が改行で終わらない場合、「wc -l」は誤った結果を返します。
例えば:
$ echo "asd" | wc -l
戻ってくる1
し、
$ echo -n "asd" | wc -l
戻ります0
そこで私がよく使うのはgrep <anything> -c
$ echo "asd" | grep "^.*$" -c
1
$ echo -n "asd" | grep "^.*$" -c
1
wc -l
これは、返されるものよりも現実に近いです。