Verwechseln Sie ms-dos nicht mit der Eingabeaufforderung. + Verwendung von find und findstr und sogar grep für Windows .. ist mit einer schnellen Suche sicherlich leicht zu finden. Unter Linux und Windows gibt es sogar Tabellen mit entsprechenden Befehlen. Auch Sie bash Beispiel ist nicht einmal spezifisch für bash .. nur nehme ich an, * nix OS.
Barlop
Antworten:
280
Findstr hört sich nach dem an, was Sie wollen. Ich benutze es die ganze Zeit als ungefähres grep-Äquivalent auf der Windows-Plattform.
Ja, das scheint das zu sein, wonach ich suche. Ich verstehe, dass es wahrscheinlich Einschränkungen gibt. Ich werde es versuchen.
Chrisjlee
18
warum konnten sie es nicht einfach grep nennen?
Victor Grazi
6
@ VictorGrazi Sie haben tatsächlich zuerst, siehe diesen Artikel . Es hieß ursprünglich qgrep - wurde aber später umbenannt.
Zitrax
3
Das große Problem dabei findstrist, dass das Regex-Muster möglicherweise keine Alternativen enthält.
Wolf
Die Frage betrifft Windows 7, aber welche anderen Windows-Versionen haben sie findstrstandardmäßig? Seit Windows XP ?
Peter Mortensen
44
Es gibt verschiedene Möglichkeiten:
Verwenden Sie einen Port eines Unix- grepBefehls. Es gibt mehrere Möglichkeiten. Oft erwähnt werden GNUWin32 , Cygwin und Unxutils . Weniger bekannt, aber in gewisser Hinsicht besser, sind die Tools im SFUA-Dienstprogramm-Toolkit , die im Subsystem für UNIX-basierte Anwendungen ausgeführt werden , das in Windows 7 Ultimate Edition und Windows Server 2008 R2 enthalten ist. (Unter Windows XP können Sie Services for UNIX Version 3.5 herunterladen und installieren .) Dieses Toolkit enthält eine große Anzahl von Befehlszeilen-TUI-Tools von und über die Korn- und C-Shells zu undmvduperlawk. Es ist sowohl in den Varianten x86-64 und IA64 als auch in x86-32 erhältlich. Die Programme werden in der nativen POSIX-Umgebung von Windows ausgeführt, anstatt mit Emulator-DLLs (wie z. B. cygwin1.dll), die Dinge über Win32 schichten. Und ja, das Toolkit hat grep, sowie rund 300 andere.
cygwin hat bei Win 7 sehr gut funktioniert. Ich brauchte grep und GnuWin32 grep hat bei mir nicht funktioniert.
Kozuch
Sie schreiben, ich sehe kein Perl in SUA C: \ Windows \ SUA> dir perl * / s / b Datei nicht gefunden und lauffähig zB c Shell von SUA Ich sehe es nicht in / bin
barlop
Sie schreiben auch, dass die SFUA in gewisser Hinsicht besser ist. Auf welche Weise?
Barlop
@ Kozuch, wenn Sie nicht angeben, wie es nicht funktioniert hat, dann ist Ihr Kommentar nicht nützlich
Barlop
19
Wenn PowerShell- Befehle zulässig sind, verwenden Sie
PS C:\> Get-ChildItem | Select-String root
oder kurz
PS C:\> ls | sls root
Beachten Sie, dass der Alias slserst ab PowerShell Version 3.0 definiert wird. Sie können einen Alias für weniger Eingabe hinzufügen:
PS C:\> New-Alias sls Select-String
Verwenden Sie, um den PowerShell-Befehl direkt von cmd aus auszuführen
In Ihrer frühen Überarbeitung haben Sie MS-DOS geschrieben, es gibt nur FIND, soweit ich weiß. Aber es ist ein uraltes Betriebssystem, das nicht mehr verwendet wird.
In der Windows - NT - Eingabeaufforderung (zB Win2K und gewinnen XP und höher, so zB win7, win10), können Sie verwenden , findund , findstrund wenn Sie herunterladen GnuWin32 danngrep
Die grundlegenden Unterschiede bestehen darin, dass findstr einige reguläre Ausdrücke unterstützt. Grep unterstützt reguläre Ausdrücke am besten.
C:\>dir | find "abc"
C:\>dir | find /i "abc"
find /?und findstr /?zeigt Ihnen, was die Schalter tun.
Gnuwin32 hat "Pakete". Wenn Sie GnuWin32 herunterladen, empfehle ich das Paket coreutils für eine Reihe grundlegender nützlicher Dienstprogramme, mit denen Sie vertraut sind, aber grep ist nicht in diesem Paket enthalten, sondern in einem eigenen Paket.
Hinzugefügt
GnuWin32s Grep, das letzte Mal, als ich es überprüft habe, ist alt. Cygwins Grep ist viel aktueller. Bedenken Sie auch, dass viele Benutzer eher virtuelle Maschinen als Windows-Ports von * nix-Befehlen verwenden.
Wenn Sie lieber verwenden würden grep, anstatt findstr, gibt es eine einzige .exeDateiversion in UnxUtils , so tragbar es ist , und es gibt keine Notwendigkeit , es zu installieren, oder so etwas wie Cygwin verwenden.
@userunknown Nun, als Beispiel ist der Befehl unxutils sed älter und unterstützt nicht \ d eg \ d22, um ein Zitat anzugeben. Ein älteres wget lädt möglicherweise keine Seite herunter, die von einer neueren unterstützt wird, und wenn Sie um Unterstützung bitten, werden Sie möglicherweise um die neueste gebeten, da dies einige Probleme lösen kann. Ein wirklich altes Grep wird zweifellos nicht die Regex-Unterstützung haben, die ein aktuelles hat
Barlop
3
Sie können versuchen, Chocolatey unter Windows zu installieren, und dadurch das Gow- Tool installieren . Dies wird Ihnen unter grepWindows zur Verfügung stellen.
Gowsteht für GNU unter Windows. Es bietet Unix-Befehlszeilendienstprogramme unter Windows.
Es ist ein Paket-Manager, wie ein Apt-Get, aber für Windows. Es hat seinen Namen, weil der Entwickler es von NuGet abgeleitet hat, einem Paketmanager für Visual Studio, und das klingt wie Nugget (wie in Chicken Nugget), also dachte er, er wäre "witzig" oder "klug" und würde anrufen sein Programm Chocolatey NuGet. Ich habe das in einem Podcast gehört, in dem er interviewt wurde. Gow kann auch unabhängig heruntergeladen werden
Barlop
1
Ich bin neu in Gow, und nach ein paar Tagen kann ich bezeugen, dass es mir sehr gut gefällt - es ist besser als alle älteren Ports von UNIX-Utils, die ich zuvor verwendet habe.
Radim Cernej
@RadimCernej Ihr Kommentar ist nur dann nützlich, wenn Sie angeben, wie Sie es für besser halten.
Barlop
@barlop: Seit ich meinen Januar-2016-Kommentar geschrieben habe, bin ich nach und nach und vollständig auf Gow umgestiegen. Bisher keine Bugs, es hat alle Dienstprogramme, die ich brauche / benutze, Pfad werden im Microsoft-Format ausgegeben (was das Kopieren / Einfügen in andere Programme erleichtert). Gow ist nicht-invasiv genug (einfach zu installieren und zu entfernen), so dass ich Ihnen dringend eine Probefahrt empfehle.
Radim Cernej
2
Bash verwenden
$ ls | grep root
Cmd verwenden
> dir /b | findstr root
Dabei /bsteht b für eine Liste von Verzeichnissen und Dateien
Dies dupliziert eine andere Antwort und fügt keinen neuen Inhalt hinzu. Bitte posten Sie keine Antwort, es sei denn, Sie haben tatsächlich etwas Neues beizutragen.
DavidPostill
@DavidPostill: Dies ist eine schnelle Lösung für "TL; DR"
-Nutzer
Das ist keine Entschuldigung für das Hinzufügen einer Antwort, die nichts Neues beiträgt. In jedem Fall wird die akzeptierte Antwort immer zuerst angezeigt, damit sie vor Ihrer gelesen wird.
DavidPostill
@ DavidPostill, nichts dagegen, aber akzeptierte Antwort enthalten mehrere übermäßige und unerklärte Schlüssel /B, /Rund /COP nicht gefragt, während meine Antwort genau gleichwertig ist
vladkras
Damit /bwird die dirAusgabe mit der Ausgabe identisch ls. Wenn Sie es testen, werden Sie den Unterschied sehen. Es ist also nicht das genaue Äquivalent.
DavidPostill
2
Ich habe eine Windows-Alternative zu grep mit Hybrid Batch / JScript-Code geschrieben. Ich habe das geschrieben, weil es ein echtes Problem war, die Escape-Zeichen direkt in den GNU-Win32-grep-Port zu bekommen. Diese Version funktioniert weitaus ähnlicher wie die GNU-Version unter Windows:
Das Multi-Replacement-Programm wurde so vorbereitet, dass viele Funktionen mithilfe von Befehlszeilenparametern ausgeführt werden können. Die Verwendung der Befehlszeile ist unten dargestellt:
Sie können Ihre vertrauten grepund anderen Linux-Befehle weiterhin verwenden, indem Sie dieses Tool UnxUtils herunterladen und es Ihrer PATHUmgebungsvariablen hinzufügen
Wenn Sie grepIhrer Windows-Umgebung das Einfachste hinzufügen möchten , navigieren Sie c:\windows\system32mit dem folgenden Befehl zu einem kleinen Stapelskript und fügen Sie es hinzu :
echo findstr %1 > grep.bat
Jetzt kannst du
dir | grep notepad.exe
Das ist wirklich eine gruselige Mischung aus Scheiße. Fügen Sie daher ein weiteres Stapelskript hinzu, lswie in diesem Beitrag erläutert
Antworten:
Findstr hört sich nach dem an, was Sie wollen. Ich benutze es die ganze Zeit als ungefähres grep-Äquivalent auf der Windows-Plattform.
Ein weiteres Beispiel mit Rohren:
quelle
findstr
ist, dass das Regex-Muster möglicherweise keine Alternativen enthält.findstr
standardmäßig? Seit Windows XP ?Es gibt verschiedene Möglichkeiten:
grep
Befehls. Es gibt mehrere Möglichkeiten. Oft erwähnt werden GNUWin32 , Cygwin und Unxutils . Weniger bekannt, aber in gewisser Hinsicht besser, sind die Tools im SFUA-Dienstprogramm-Toolkit , die im Subsystem für UNIX-basierte Anwendungen ausgeführt werden , das in Windows 7 Ultimate Edition und Windows Server 2008 R2 enthalten ist. (Unter Windows XP können Sie Services for UNIX Version 3.5 herunterladen und installieren .) Dieses Toolkit enthält eine große Anzahl von Befehlszeilen-TUI-Tools von und über die Korn- und C-Shells zu undmv
du
perl
awk
. Es ist sowohl in den Varianten x86-64 und IA64 als auch in x86-32 erhältlich. Die Programme werden in der nativen POSIX-Umgebung von Windows ausgeführt, anstatt mit Emulator-DLLs (wie z. B.cygwin1.dll
), die Dinge über Win32 schichten. Und ja, das Toolkit hatgrep
, sowie rund 300 andere.grep
Befehle, die von Benutzern geschrieben und veröffentlicht wurden. Tim Charron hat beispielsweise eine native Win32-Version eines modifizierten GNU-grep . Es gibt auch PowerGREP , Bare Grep , grepWin , AstroGrep und dnGrep , obwohl dies alles GUI-Programme sind, keine TUI-Programme.find
undfindstr
. Die Syntax unterscheidet sich von der vongrep
note, ebenso wie die Fähigkeit zum regulären Ausdruck.quelle
Wenn PowerShell- Befehle zulässig sind, verwenden Sie
oder kurz
Beachten Sie, dass der Alias
sls
erst ab PowerShell Version 3.0 definiert wird. Sie können einen Alias für weniger Eingabe hinzufügen:Verwenden Sie, um den PowerShell-Befehl direkt von cmd aus auszuführen
quelle
In Ihrer frühen Überarbeitung haben Sie MS-DOS geschrieben, es gibt nur
FIND
, soweit ich weiß. Aber es ist ein uraltes Betriebssystem, das nicht mehr verwendet wird.In der Windows - NT - Eingabeaufforderung (zB Win2K und gewinnen XP und höher, so zB win7, win10), können Sie verwenden ,
find
und ,findstr
und wenn Sie herunterladen GnuWin32 danngrep
Die grundlegenden Unterschiede bestehen darin, dass findstr einige reguläre Ausdrücke unterstützt. Grep unterstützt reguläre Ausdrücke am besten.
find /?
undfindstr /?
zeigt Ihnen, was die Schalter tun.Gnuwin32 hat "Pakete". Wenn Sie GnuWin32 herunterladen, empfehle ich das Paket coreutils für eine Reihe grundlegender nützlicher Dienstprogramme, mit denen Sie vertraut sind, aber grep ist nicht in diesem Paket enthalten, sondern in einem eigenen Paket.
Hinzugefügt
GnuWin32s Grep, das letzte Mal, als ich es überprüft habe, ist alt. Cygwins Grep ist viel aktueller. Bedenken Sie auch, dass viele Benutzer eher virtuelle Maschinen als Windows-Ports von * nix-Befehlen verwenden.
quelle
Wenn Sie lieber verwenden würden
grep
, anstattfindstr
, gibt es eine einzige.exe
Dateiversion in UnxUtils , so tragbar es ist , und es gibt keine Notwendigkeit , es zu installieren, oder so etwas wie Cygwin verwenden.quelle
.zip
Datei von.exe
Dateien. Der einzige kleine Nachteil ist, dass die Versionen etwas alt sind.grep
Windows: gnuwin32.sourceforge.net/packages/grep.htmSie können versuchen, Chocolatey unter Windows zu installieren, und dadurch das Gow- Tool installieren . Dies wird Ihnen unter
grep
Windows zur Verfügung stellen.Gow
steht für GNU unter Windows. Es bietet Unix-Befehlszeilendienstprogramme unter Windows.quelle
Bash verwenden
Cmd verwenden
Dabei
/b
steht b für eine Liste von Verzeichnissen und Dateienquelle
/B
,/R
und/C
OP nicht gefragt, während meine Antwort genau gleichwertig ist/b
wird diedir
Ausgabe mit der Ausgabe identischls
. Wenn Sie es testen, werden Sie den Unterschied sehen. Es ist also nicht das genaue Äquivalent.Ich habe eine Windows-Alternative zu grep mit Hybrid Batch / JScript-Code geschrieben. Ich habe das geschrieben, weil es ein echtes Problem war, die Escape-Zeichen direkt in den GNU-Win32-grep-Port zu bekommen. Diese Version funktioniert weitaus ähnlicher wie die GNU-Version unter Windows:
Die aktuellste Version finden Sie dazu immer auf meiner Gist- Seite.
quelle
http://www.multireplacer.com
Das Multi-Replacement-Programm wurde so vorbereitet, dass viele Funktionen mithilfe von Befehlszeilenparametern ausgeführt werden können. Die Verwendung der Befehlszeile ist unten dargestellt:
quelle
Sie können Ihre vertrauten
grep
und anderen Linux-Befehle weiterhin verwenden, indem Sie dieses Tool UnxUtils herunterladen und es IhrerPATH
Umgebungsvariablen hinzufügenquelle
2.4.2
aber gnuwin32 hat einen späteren2.5.4
Ich würde empfehlen, busybox-w32 zu verwenden , da es nur etwa 500 KB groß ist und aktiv gewartet wird.
In Ihrem Fall lautet die Eingabeaufforderung wie folgt:
Sie können
doskey
in einer Eingabeaufforderung den Start durch eine Batchdatei verwenden, um einen Befehl zu erstellen, z.Dann können Sie
ls | grep root
an der Eingabeaufforderung verwenden.quelle
Wenn Sie
grep
Ihrer Windows-Umgebung das Einfachste hinzufügen möchten , navigieren Siec:\windows\system32
mit dem folgenden Befehl zu einem kleinen Stapelskript und fügen Sie es hinzu :Jetzt kannst du
Das ist wirklich eine gruselige Mischung aus Scheiße. Fügen Sie daher ein weiteres Stapelskript hinzu,
ls
wie in diesem Beitrag erläutertJetzt sieht es ein bisschen vertraut aus
HTH
quelle
Das wird schnell und schmutzig sein.
quelle