Findstr: Sucht nach Dateinamen, die genau einen einzelnen Punkt enthalten

503
Kapt.Brackbier

Ich versuche verzweifelt, alle Dateien in einem Ordner und seinen Unterverzeichnissen zu finden, die genau einen einzelnen Punkt enthalten. Als ich die Dokumentation von findstr las, fand ich diese Art von Regex, aber sie stimmt immer mit allen Dateinamen überein, die Punkte enthalten. In meinem Verständnis sollte der Regex, den ich konstruiert habe, lauten: "Alle Zeichen außer Punkten, dann benötigen Sie einen einzelnen Punkt, dann wieder beliebige Zeichen außer Punkten."

where /r directory *.* | findstr /irc:"[^\.]*\.[^\.]*" 

Ich weiß, dass ich grep installieren könnte, aber ich möchte eine Lösung, die sofort funktioniert.

0

1 Antwort auf die Frage

0
Kapt.Brackbier

Ok, ich habe die Lösung selbst gefunden.

Bei [class]*Übereinstimmungen mit null oder mehr Übereinstimmungen passt dieser Ausdruck immer dann, wenn mindestens ein Punkt (im Gegensatz zu genau einem Punkt) in einem Dateinamen vorhanden ist.

Damit er genau übereinstimmt, muss die Position des Punktes angegeben werden. In meinem Fall habe ich einfach die Positionsbezeichner "^" (Zeilenanfang) und "$" (Zeilenende) hinzugefügt, so dass der Regex jetzt in "Zeilen mit genau einem einzelnen Punkt irgendwo zwischen dem Anfang und dem Ende der Zeile übersetzt wird Linie"

where /r directory *.* | findstr /irc:"^[^\.]*\.[^\.]*$"