Antworten:
(Ich bin immer noch ein Fan von PowerGREP , aber ich benutze es nicht mehr.)
Ich weiß, dass du es bereits erwähnt hast, aber PowerGREP ist großartig .
Einige meiner Lieblingsfunktionen sind:
Jetzt ist mir klar, dass die anderen Grep-Tools all das können. Es ist nur so, dass PowerGREP alle Funktionen in einer sehr benutzerfreundlichen Benutzeroberfläche vereint.
Von denselben wunderbaren Leuten, die dir RegexBuddy gebracht haben und mit denen ich keine Beziehung habe , außer ihre Sachen zu lieben. (Es sollte beachtet werden, dass RegexBuddy eine Basisversion von grep (für Windows) selbst enthält und viel weniger kostet als PowerGREP.)
FINDSTR ist ziemlich leistungsfähig, unterstützt reguläre Ausdrücke und hat den Vorteil, dass es bereits auf allen Windows-Computern verfügbar ist .
c:\> FindStr /?
Searches for strings in files.
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
[/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
strings [[drive:][path]filename[ ...]]
/B Matches pattern if at the beginning of a line.
/E Matches pattern if at the end of a line.
/L Uses search strings literally.
/R Uses search strings as regular expressions.
/S Searches for matching files in the current directory and all
subdirectories.
/I Specifies that the search is not to be case-sensitive.
/X Prints lines that match exactly.
/V Prints only lines that do not contain a match.
/N Prints the line number before each line that matches.
/M Prints only the filename if a file contains a match.
/O Prints character offset before each matching line.
/P Skip files with non-printable characters.
/OFF[LINE] Do not skip files with offline attribute set.
/A:attr Specifies color attribute with two hex digits. See "color /?"
/F:file Reads file list from the specified file(/ stands for console).
/C:string Uses specified string as a literal search string.
/G:file Gets search strings from the specified file(/ stands for console).
/D:dir Search a semicolon delimited list of directories
strings Text to be searched for.
[drive:][path]filename
Specifies a file or files to search.
Use spaces to separate multiple search strings unless the argument is prefixed
with /C. For example, 'FINDSTR "hello there" x.y' searches for "hello" or
"there" in file x.y. 'FINDSTR /C:"hello there" x.y' searches for
"hello there" in file x.y.
Regular expression quick reference:
. Wildcard: any character
* Repeat: zero or more occurances of previous character or class
^ Line position: beginning of line
$ Line position: end of line
[class] Character class: any one character in set
[^class] Inverse class: any one character not in set
[x-y] Range: any characters within the specified range
\x Escape: literal use of metacharacter x
\<xyz Word position: beginning of word
xyz\> Word position: end of word
Anwendungsbeispiel: findstr text_to_find *
oder rekursiv suchenfindstr /s text_to_find *
GrepWin Free und Open Source (GPL)
Ich habe grepWin verwendet, das von einem der Schildkröten geschrieben wurde. Erledigt den Job unter Windows ...
Update Juli 2013:
Ein weiteres Grep-Tool, das ich jetzt unter Windows ständig verwende, ist AstroGrep :
Seine Fähigkeit, mir mehr als nur die Zeilensuche (dh den --context = NUM eines Befehlszeilen-Grep) anzuzeigen, ist von unschätzbarem Wert.
Und es ist schnell. Sehr schnell, sogar auf einem alten Computer mit Nicht- SSD- Laufwerk (ich weiß, sie haben diese Festplatte früher mit sich drehenden Festplatten, sogenannten Platten , gemacht, verrückt, oder?)
Es ist frei.
Es ist portabel (einfaches Zip-Archiv zum Entpacken).
Ursprüngliche Antwort Oktober 2008
Gnu Grep geht es gut
Sie können es zum Beispiel hier herunterladen: ( site ftp )
Alle üblichen Optionen sind hier.
Das, kombiniert mit gawk und xargs (einschließlich 'find' von GnuWin32 ), und Sie können wirklich Skripte erstellen , als wären Sie unter Unix!
Siehe auch die Optionen, mit denen ich rekursiv grep :
grep --include "*.xxx" -nRHI "my Text to grep" *
Das Select-String-Cmdlet von PowerShell war in Version 1.0 in Ordnung, in Version 2.0 jedoch erheblich besser . Wenn PowerShell in neuere Windows-Versionen integriert ist, sind Ihre Kenntnisse hier immer nützlich, ohne dass zuvor etwas installiert werden muss.
Neue Parameter zu Select-String hinzugefügt : Das Cmdlet Select-String unterstützt jetzt neue Parameter, z.
- -Kontext: Hiermit können Sie Linien vor und nach der Übereinstimmungslinie anzeigen
- -AllMatches: Hiermit können Sie alle Übereinstimmungen in einer Zeile anzeigen (zuvor konnten Sie nur die erste Übereinstimmung in einer Zeile anzeigen.)
- -NotMatch: Entspricht grep -vo
- -Encoding: um die Zeichenkodierung anzugeben
Ich finde es zweckmäßig, eine Funktion gcir
für zu erstellen Get-ChildItem -Recurse .
, mit smarts, um Parameter korrekt zu übergeben, und einen Alias ss
für Select-String
. Also schreibst du:
gcir * .txt | ss foo
ls . *.txt -r| sls -ca "SomeString"
sls
für Select-String
wirklich zu lang?
Es fällt möglicherweise nicht genau in die Kategorie "grep", aber ohne ein Dienstprogramm namens AgentRansack könnte ich unter Windows nicht auskommen . Es ist ein GUI-basiertes Dienstprogramm zum Suchen in Dateien mit Regex-Unterstützung. Es ist ganz einfach, mit der rechten Maustaste auf einen Ordner zu klicken, auf "Durchsuchen" zu klicken und Dateien zu finden, die das enthalten, wonach Sie suchen. Extrem schnell auch.
Es ist ein paar Jahre her, seit Sie die Frage gestellt haben, aber ich würde AstroGrep ( http://astrogrep.sourceforge.net ) empfehlen .
Es ist kostenlos, Open Source und hat eine einfache Oberfläche. Ich benutze es, um die ganze Zeit nach Code zu suchen.
PowerShell wurde einige Male erwähnt. So würden Sie es tatsächlich auf grepische Weise verwenden:
Get-ChildItem -recurse -include *.txt | Select-String -CaseSensitive "SomeString"
Es durchsucht rekursiv alle Textdateien im aktuellen Verzeichnisbaum nach SomeString
Groß- und Kleinschreibung.
Führen Sie Folgendes aus:
function pgrep { param([string]$search, [string]$inc) Get-ChildItem -recurse -include $inc | Select-String -CaseSensitive $search }
Dann mach:
pgrep SomeStringToSearch *.txt
Um es dann wirklich magisch zu machen, fügen Sie Ihrem PowerShell-Profil den Funktionsalias hinzu, und Sie können den Schmerz, nicht über die richtigen Befehlszeilen-Tools zu verfügen, fast lindern.
Cygwin enthält grep. Alle GNU-Tools und Unix-Inhalte funktionieren unter Windows hervorragend, wenn Sie Cygwin installieren.
ack funktioniert gut unter Windows (wenn Sie Perl haben ). Ich finde es für viele Zwecke besser als grep.
Git unter Windows = grep in cmd.exe
Ich habe gerade herausgefunden, dass die Installation von Git Ihnen einige grundlegende Linux-Befehle gibt: cat, grep, scp und alle anderen guten.
Installieren Sie dann den Git bin-Ordner zu Ihrem PATH und Ihre cmd.exe verfügt über grundlegende Linux-Funktionen!
dnGREP ist ein Open Source Grep-Tool für Windows. Es unterstützt eine Reihe cooler Funktionen, darunter:
IMHO, es hat auch eine schöne und saubere Oberfläche :)
Ich benutze immer WinGREP , aber ich hatte Probleme damit, Dateien nicht loszulassen.
Nun, neben dem Windows-Port der GNU grep bei:
http://gnuwin32.sourceforge.net/
Es gibt auch Borlands Grep (sehr ähnlich zu GNU One) in der Freeware Borlands Free C ++ Compiler (es ist eine Freeware mit Befehlszeilentools).
Ich habe GNU-Dienstprogramme für Win32 seit einiger Zeit erfolgreich verwendet und es hat ein gutes Grep sowie Tail- und andere praktische Gnu- Dienstprogramme für Win32 . Ich vermeide die gepackte Shell und verwende einfach die ausführbaren Dateien direkt in der Win32-Eingabeaufforderung.
Der Schwanz, der verpackt ist, ist auch eine ziemlich gute kleine Anwendung.
Ich bin der Autor von Aba Search and Replace. Genau wie PowerGREP unterstützt es reguläre Ausdrücke, das Speichern von Mustern zur weiteren Verwendung, das Rückgängigmachen für Ersetzungen, die Vorschau mit Syntaxhervorhebung für HTML / CSS / JS / PHP sowie verschiedene Codierungen, einschließlich UTF-8 und UTF-16.
Im Vergleich zu PowerGREP ist die Benutzeroberfläche weniger überladen. Aba beginnt sofort mit der Suche, während Sie das Muster eingeben (inkrementelle Suche), sodass Sie mit regulären Ausdrücken experimentieren und sofort die Ergebnisse sehen können.
Sie sind herzlich eingeladen, mein Tool auszuprobieren. Gerne beantworte ich Ihre Fragen.
Ich wollte ein kostenloses Grep-Tool für Windows, mit dem Sie mit der rechten Maustaste auf einen Ordner klicken und eine Regex-Suche für jede Datei durchführen können - ohne Nörgelbildschirm.
Das Folgende ist eine schnelle Lösung, die auf den findstr
in einem vorherigen Beitrag erwähnten basiert .
Erstellen Sie irgendwo auf Ihrer Festplatte eine Textdatei, in der Sie langlebige Werkzeuge aufbewahren. Benennen Sie in .bat oder .cmd um und fügen Sie Folgendes ein:
@echo off
set /p term="Search term> "
del %temp%\grepresult.txt
findstr /i /S /R /n /C:"%term%" "%~1\*.*" > "%temp%\grepresult.txt"
start notepad "%temp%\grepresult.txt"
Navigieren Sie dann zum Ordner SendTo. %APPDATA%\Microsoft\Windows\SendTo
Navigieren Sie unter Windows 7 zu einer Verknüpfung der Batchdatei und ziehen Sie sie in diesen SendTo-Ordner.
Ich habe die Verknüpfung umbenannt 1 GREP
, um sie ganz oben in der SendTo-Liste zu halten.
Als nächstes möchte ich die Ausgabe findstr
durch etwas leiten, das eine HTML-Datei generiert, sodass Sie auf jede Ausgabezeile klicken können, um diese Datei zu öffnen. Ich glaube auch nicht, dass es mit Verknüpfungen zu Ordnern funktioniert. Ich müsste den Parameter überprüfen und sehen, ob er ".lnk" enthält.
Ich habe Borlands Grep jahrelang benutzt, aber gerade ein Muster gefunden, das nicht passt. Eeeks. Was hat es im Laufe der Jahre noch nicht gefunden? Ich habe einen einfachen Ersatz für die Textsuche geschrieben, der wie grep rekursiv ist - es ist FS.EXE in Source Forge.
grep schlägt fehl ...
C:\DEV>GREP GAAPRNTR \SOURCE\TPALIB\*.PRG
<no results>
Windows Findstr funktioniert ...
C:\DEV>FINDSTR GAAPRNTR \SOURCE\TPALIB\*.PRG
\SOURCE\TPALIB\TPGAAUPD.PRG:ffSPOOL(cRPTFILE, MEM->GAAPRNTR, MEM->NETTYPE)
\SOURCE\TPALIB\TPPRINTR.PRG: AADD(mPRINTER, TPACONFG->GAAPRNTR)
\SOURCE\TPALIB\TPPRINTR.PRG: IF TRIM(TPACONFG->GAAPRNTR) <> TRIM(mPRINTER[2])
\SOURCE\TPALIB\TPPRINTR.PRG: REPLACE TPACONFG->GAAPRNTR WITH mPRINTER[2]
Mein bevorzugtes Tool ist das entsprechend benannte Windows Grep :
Die Auswahlzeichenfolge von PowerShell ist ähnlich, es sind nicht die gleichen Optionen und die gleiche Semantik, aber sie ist immer noch leistungsstark.
Wenn Sie ein einfach zu verwendendes Windows Grep-Tool möchten, habe ich ein Tool namens P-Grep erstellt, das ich zum kostenlosen Download von meiner Website zur Verfügung gestellt habe: www.adjutantit.com - Startmenü, Downloads.
Windows Grep schien Probleme mit einer großen Anzahl von Dateien zu haben, daher habe ich meine eigenen geschrieben - was zuverlässiger zu sein scheint. Sie können einen Ordner auswählen, mit der rechten Maustaste klicken und ihn an P-Grep senden. Der sendto-Ordner wird während der Installation nicht aktualisiert.
Ich benutze AJC Grep seit Jahren täglich. Die einzige wichtige Einschränkung, die ich festgestellt habe, besteht darin, dass Dateipfade auf 255 Zeichen begrenzt sind und nicht mehr angezeigt werden, sondern nur, wenn eine Warnung angezeigt wird. Es ist nervig, kommt aber nicht sehr oft vor.
Ich verwende es unter 64-Bit-Windows 7 Ultimate, daher sind die 64-Bit-Anmeldeinformationen in Ordnung.
Ich benutze es schon immer und zum Glück ist es immer noch verfügbar. Es ist super schnell und sehr klein.
Wenn keine der Lösungen genau das ist, wonach Sie suchen, könnten Sie vielleicht einen Wrapper an FindStr schreiben, der genau das tut, was Sie benötigen?
FindStr ist sowieso ziemlich gut, daher sollte es nur eine grafische Benutzeroberfläche aktivieren (wenn Sie dies wünschen) und einige zusätzliche Funktionen bereitstellen (z. B. die Kombination mit Suchen, um die Anzahl der Dateien zu ermitteln, die eine bestimmte Zeichenfolge enthalten [oben erwähnt]).
Dies setzt natürlich voraus, dass Sie die Voraussetzung, Zeit und Neigung dazu haben!
Ich habe Cygwin auf meinem Computer installiert und das Cygwin-Bin-Verzeichnis in meinen Umgebungspfad eingefügt, sodass das Cygwin-Grep wie gewohnt in einer Befehlszeile funktioniert, die alle meine Skriptanforderungen für Grep im Moment löst.