sOでこれを見つけることができませんでした。端末で次のコマンドを実行しました。
>> grep -Rl "curl" ./
キーワードcurlが発生したファイルのリストが表示されます。ファイル数を数えたい私が考えることができる最初の方法は、端末に来た出力の行数を数えることです。どうやってやるの?
-l
(行数)スイッチを使用して、結果を wc
にパイプ処理します。
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
が返すものよりも現実に近いものです。