Antworten:
grep -l "string" * | wc -l wird nach "string" im Inhalt aller Dateien im Arbeitsverzeichnis suchen und Ihnen mitteilen, wie viele übereinstimmten.
grep -lr "string" directory | wc -lWenn Sie keine rekursive Suche wünschen, können Sie die Option find with maxdepth verwenden: find directory -maxdepth 1 -type f -exec grep -l "string" {} + | wc -lBeachten Sie, dass diese zweite Option langsamer ist als grep.
awk '/pattern_to_look_for/ {s+=1; nextfile;} END {print s}' *
Erläuterung: Hierbei wird nach der Anzahl der Dateien gesucht, deren Inhalt "pattern_to_look_for" enthält und nicht nach deren Dateinamen (wie bei Wags Antwort). Anhand Ihrer Frage ist schwer zu erkennen, wonach Sie suchen.
find . ! -name . -prune -type ftun, wie den Stern durch so etwas zu ersetzen (verpassen Sie nicht die Backticks). Dieser Befehl listet nur die Dateien im Ordner auf.
Dies funktioniert in Bash mit jedem Dateinamen:
grep -lZ "$pattern" * | tr -cd '\000' | wc -c
Erläuterung:
grepDie -ZOption von gibt jedes Ergebnis mit einem ␀-Byte-Trennzeichen aus. Dieses Zeichen darf nicht Teil eines Dateinamens sein. Wir können also einfach die Anzahl der Trennzeichen zählen, um die Anzahl der Dateien zu ermitteln.tr.wc.