Bash/shの入力として特定の文字列を含む(ディレクトリ内の)ファイルの数をどのようにカウントできますか?
grep -l "string" * | wc -l
は、作業ディレクトリ内のすべてのファイルのコンテンツで「文字列」を検索し、一致したファイルの数を通知します。
grep
sパラメータ-l
は、一致するファイル名のみを出力します$PATTERN
、wc
は後でカウントできます。
grep -l "$PATTERN" * | wc -l
awk '/pattern_to_look_for/ {s+=1; nextfile;} END {print s}' *
明確化:これは、コンテンツに「pattern_to_look_for」があり、ファイル名ではない(Wagの回答のような)ファイルの数を探します。あなたの質問から、あなたが探しているものを言うのは難しいです。
これはanyファイル名を使用してBashで機能します。
grep -lZ "$pattern" * | tr -cd '\000' | wc -c
説明:
grep
の-Z
オプションは、すべての結果を␀バイトの区切り文字で出力します。この文字をファイル名の一部にすることはできないため、セパレーターの数を数えるだけでファイルの数を取得できます。tr
を使用してすべてを削除しますexcept␀バイトです。wc
を使用して文字を数えます。