Eigentlich ist das ein ganz simples Problem: Ich habe eine Reihe von Textdateien und möchte herausfinden, in welchen der Dateien ein bestimmter Textschnipsel vorkommt. Das könnten z. B. Cpp-Dateien sein, also Quelltexte für C++. Ich möchte herausfinden, in welchen Dateien ein bestimmter Ausdruck vorkommt. Das geht auf der Windows-Kommandozeile eigentlich ganz einfach:
find “mein Ausdruck” *.cpp
Den Befehl find
gibt es schon sehr lange. Selbst in den ersten Versionen von MS-DOS war er schon enthalten und er funktioniert heute auf der Kommandozeile von Windows 10 immer noch.
Der Befehl find
hat aber auch gewisse Einschränkungen. Schaut man sich mit find /?
mal die möglichen Optionen an, dann sieht man, dass es da nicht so sehr viele Möglichkeiten gibt. Eine Option fehlt mir ganz besonders: Das rekursive Suchen in allen Unterordnern. Ist man mit einem größeren Programmierprojekt beschäftigt, dann gibt es Unterordner en masse. In jeden Ordner mit cd
wechseln und dann suchen, das geht nicht.
Es gibt aber Abhilfe. Der Befehl findstr
bietet alle Möglichkeiten, die man sich so wünscht.
Mit findstr /s “mein Ausdruck” *.cpp
werden alle cpp-Dateien im aktuellen Ordner und in allen Unterordnern nach “mein Ausdruck” durchsucht. Mit findstr /r
ist auch die Verwendung von regulären Ausdrücken möglich. Mit findstr /?
kann man sich alle Möglichkeiten anzeigen lassen. Der Befehl findstr
ähnelt in seinen Möglichkeiten sehr dem jeden Linux-Nutzer bekannten Befehl grep
.
Den Befehl find
kann man also getrost vergessen und stattdessen findstr
nutzen.