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 -l
Wenn 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 -l
Beachten 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 f
tun, 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:
grep
Die -Z
Option 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
.