Zeilen zählen auf der Windows-Kommandozeile mit find


    Tags:

    Windows besitzt kein Äquivalent zu "wc" (Word Count) in Linux, aber es gibt einige kostenlose Implementierungen, die sich mehr oder weniger an diesem 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. Da aber jede Zeile zumindest einen Zeilenvorschub enthält, gibt find die Zahl aller Zeilen aus.

    Alle nicht leeren Zeilen zählen mit find

    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