326

SOでこれを見つけることができませんでした。ターミナルで次のコマンドを実行しました。

>> grep -Rl "curl" ./

これにより、キーワード curl が発生するファイルのリストが表示されます。ファイル数を数えたい。私が考えることができる最初の方法は、ターミナルに入った出力の行数を数えることです。どうやってやるの?

4

4 に答える 4

575

( line count ) スイッチをwc使用して結果をパイプします。-l

grep -Rl "curl" ./ | wc -l
于 2012-09-17T10:32:36.130 に答える
64

ここに EaterOfCode のコメントを答えとして入れます。

grep 自体にも -c フラグがあり、カウントを返すだけです

したがって、コマンドと出力は次のようになります。

$ grep -Rl "curl" ./ -c
24

編集:

この回答は短くなる可能性があるため、受け入れられた回答(を使用しているwc)よりも優れているように見えるかもしれませんが。私はもうこれに同意しません。パイプで行数をカウントできることを覚えておくwc -lと、他のプログラムでも使用できるため、はるかに便利ですgrep

于 2015-09-13T12:34:37.920 に答える
10

最後の行が改行で終わっている場合は、「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これは、返されるものよりも現実に近いです。

于 2019-08-02T23:35:56.407 に答える