Ich muss unter Windows einen rekursiven Grep durchführen, etwa so unter Unix / Linux:
grep -i 'string' `find . -print`
oder die bevorzugtere Methode:
find . -print | xargs grep -i 'string'
Ich bin nur mit cmd.exe festgefahren, daher habe ich nur Windows-Befehle eingebaut. Ich kann Cygwin oder Tools von Drittanbietern wie UnxUtils leider nicht auf diesem Server installieren . Ich bin mir nicht einmal sicher, ob ich PowerShell installieren kann. Irgendwelche Vorschläge, bei denen nur integrierte cmd.exe-Dateien (Windows 2003 Server) verwendet werden?
windows
command-line
grep
Andy White
quelle
quelle
grep -i 'string' -R .
dass, wie @NathanFellman vorschlägt, das Problem überlanger Befehle vermieden wird.Antworten:
findstr
kann rekursive Suchen durchführen (/ S) und unterstützt eine Variante der Regex-Syntax (/ R).quelle
Die Parameter haben folgende Bedeutung:
s
= rekursivp
= nicht druckbare Zeichen überspringeni
= Groß- und Kleinschreibung wird nicht berücksichtigtn
= Zeilennummern druckenUnd die Zeichenfolge, nach der gesucht werden soll, ist das Bit, nach dem Sie Anführungszeichen setzen
/c:
quelle
spin
? Ist es die zu findende Textzeile? Und wird / g oder / f nicht zum Angeben von Dateien verwendet? Was ist mit den eckigen Klammern?findstr /?
erklärt jeden Parameter. s = rekursiv, p = nicht druckbare Zeichen überspringen, i = Groß- und Kleinschreibung nicht berücksichtigen, n = Zeilennummern drucken. Sie brauchen nicht unbedingt alle, aber ich mag sie undspin
ist leicht zu merken. Die zu suchende Zeichenfolge ist das Bit, nach dem Sie Anführungszeichen setzen/c:
./?
, aber ich wusste eigentlich nicht, dass Modifikatoren wie verwendet werden/spin
. Ich dachte, sie würden so benutzt/s/p/i/n
./
s nachlassen . Dies ist einer. Nicht alle von ihnen lassen Sie das tun. Sie wissen, cmd ist etwas ganz Besonderes.Ich habe gerade einen Text mit dem folgenden Befehl durchsucht, in dem alle Dateinamen aufgeführt sind, die meinen angegebenen 'Suchtext' enthalten.
quelle
Ich empfehle ein wirklich tolles Tool:
native Unix-Utils:
Packen Sie sie einfach aus und legen Sie diesen Ordner in Ihre PATH-Umgebungsvariable und voila! :) :)
Funktioniert wie ein Zauber, und es gibt viel mehr als nur grep;)
quelle
Rekursive Suche nach
import
Wörtern imsrc
Ordner:quelle
quelle
Select-String
hat am besten für mich funktioniert. Alle anderen hier aufgeführten Optionen, z. B.findstr
, funktionierten nicht mit großen Dateien.Hier ist ein Beispiel:
Hinweis : Dies erfordert Powershell
quelle
Wenn Sie Perl installiert haben, können Sie ack verwenden , das unter http://beyondgrep.com/ verfügbar ist .
quelle