Zeilen zählen auf der Windows-Kommandozeile mit find


    Tags:

    Möchte man in einer Unix-Shell die Ausgabe eines Befehls weiterverarbeiten, dann stehen dafür zahlreiche Filter zur Verfügung. Einer davon ist wc, mit dem die Zahl der Zeichen, Wörter und Zeilen ermitteln kann. Windows besitzt kein Äquivalent zu diesem Word Count, es gibt aber einige kostenlose Implementierungen, die sich mehr oder weniger am Unix-Vorbild orientieren. Möchte man dafür kein eigenes Programm installieren, dann kann auch find Zeilen zählen.

    Als Tool für die Suche nach Zeichenketten ist find eher ein schwache Nummer, dafür gibt es unter Windows mit findstr einen mächtigeren Nachfolger. Dafür ist find in der Lage, mit dem Schalter /c für die durchsuchten Daten nur die Zahl der Zeilen auszugeben, während findstr mit /N alle Zeilen anzeigt und ihnen eine Nummer voranstellt.

    Suche nach nicht enthaltenen Zeichenketten

    Diese Fähigkeit von find kann man nutzen, um es auf einen Zeilenzähler zu reduzieren. Allerdings kommt es bei dieser Aufgabe darauf an, dass durch das Suchmuster keine Zeilen ausgefiltert werden, man möchte normalerweise ja alle zählen. Zu diesem Zweck kombiniert man /c mit /v, das nur Ergebnisse anzeigt, die den Suchausdruck nicht enthalten. Wenn man also die Zahl der Zeilen in der Datei readme.txt zählen möchte dann kann man

    find readme.txt /c /v ""

    eingeben. Dieser Aufruf zeigt die Anzahl der nicht leeren Zeilen an, weil das Suchmuster die leere Zeichenkette ist. Möchte man auch die Leerzeilen mitzählen, dann muss man nach einer Zeichenfolge suchen, die bestimmt nicht in der Datei vorkommt, also etwa eine beliebige Sequenz von Interpunktions- oder Sonderzeichen.

    Der häufigere Anwendungsfall für einen Zeilenzähler besteht jedoch darin, die Ausgabe eines Befehls zu filtern. So würde beispielsweise

    sc query|find /c "SERVICE_NAME:"

    die Zahl aller gestarteten Windows-Dienste anzeigen.

    2 Kommentare

    Bild von Jens
    Jens sagt:
    28. November 2012 - 14:16

    Vielen Dank für den sehr guten Tipp. Damit konnte einer Kollegin weitergeholfen werden, die wissen musste, wie viele Zeilen eine ca. 187 MB große Datei enthält. Die vor Ort vorhandenen Bordmittel konnten nicht helfen.

    Bild von Wolfgang Sommergut
    28. November 2012 - 22:32

    Interessante Anwendung für find :-) Ich habe nicht gedacht, dass es so große Dateien schafft. Die Alternative in PowerShell würde übrigens so aussehen:

    Get-Content <Dateiname>| measure -line