web-dev-qa-db-ja.com

特定の文字列を含むファイルの数

Bash/shの入力として特定の文字列を含む(ディレクトリ内の)ファイルの数をどのようにカウントできますか?

20
user4311

grep -l "string" * | wc -lは、作業ディレクトリ内のすべてのファイルのコンテンツで「文字列」を検索し、一致したファイルの数を通知します。

33
Wolf

grepsパラメータ-lは、一致するファイル名のみを出力します$PATTERNwcは後でカウントできます。

grep -l "$PATTERN" * | wc -l
9
wag
awk '/pattern_to_look_for/ {s+=1; nextfile;} END {print s}' *

明確化:これは、コンテンツに「pattern_to_look_for」があり、ファイル名ではない(Wagの回答のような)ファイルの数を探します。あなたの質問から、あなたが探しているものを言うのは難しいです。

3
Jan Persson

これはanyファイル名を使用してBashで機能します。

grep -lZ "$pattern" * | tr -cd '\000' | wc -c

説明:

  • grep-Zオプションは、すべての結果を␀バイトの区切り文字で出力します。この文字をファイル名の一部にすることはできないため、セパレーターの数を数えるだけでファイルの数を取得できます。
  • 出力内の他の文字を取り除くには、trを使用してすべてを削除しますexcept␀バイトです。
  • 次に、wcを使用して文字を数えます。
2
l0b0