Der Befehl find scheint in cygwin nicht zu funktionieren

10

Beim Versuch, Suchbefehle in Cygwin auszuführen, wird immer wieder der Fehler angezeigt

"FIND: Parameterformat nicht korrekt"

Dieselben Befehle werden jedoch unter Linux ausgeführt. Was ist los?

dggoldst
quelle

Antworten:

13

Sie verwenden den Windows-Befehl find, nicht den von cygwin.

Dies wird deutlich, wenn Sie 'which find' eingeben.

Um dies zu beheben, bearbeiten Sie Ihren Pfad (Systemeigenschaften -> Erweitert -> Umgebungsvariablen -> Systemvariablen -> Pfad) und verschieben Sie den Eintrag für cygwin an die Vorderseite des Pfads. (Eine einfache Möglichkeit, dies zu tun, besteht darin, den gesamten Pfad zu kopieren, in den Editor einzufügen, dort zu bearbeiten und wieder einzufügen.)

Wie in den Kommentaren erwähnt, besteht eine andere Möglichkeit darin, die Bash-Startskripte zu bearbeiten und den Pfad dort zu ändern. Ich würde sogar sagen, dass dies die bevorzugte Lösung ist, da ich jetzt einen Fall gefunden habe, in dem Cygwins-Versionen zuerst ein Problem verursachten.

dggoldst
quelle
5
Dies ist möglicherweise nicht die ideale Lösung. Eine Alternative besteht darin, die Bash- Startdateien so zu bearbeiten , dass die Cygwin-Pfade dem Systempfad vorangestellt werden, anstatt sie anzuhängen. Der Hauptunterschied besteht darin, ob die Cygwin-Versionen zuerst gefunden werden sollen, wenn Befehle in den Standard-Windows-CMD- oder Explorer-Shells ausgeführt werden.
Quacksalber Quijote
cygwin stellt dem globalen seinen eigenen weg voran. Es ist also ziemlich seltsam, dass OP diesen Fehler bekommt.
Akira
Guter Punkt Quacksalber!
dggoldst
2

Ich konnte in der Windows-Befehlsshell nicht die richtige Suche finden, und die PATH-Optimierung hat nicht geholfen. Aber das hat funktioniert:

bash
/usr/bin/find . -iname blahblah*
exit

Der explizite Pfad hat den richtigen 'Find' ausgelöst und funktioniert aus irgendeinem Grund nur, wenn er in Bash ausgeführt wird.

DarenW
quelle
Das hat bei mir am besten funktioniert. Ich habe ein Skript erstellt, das auf verschiedenen Computern ausgeführt werden kann, auf denen bereits Bash ausgeführt wurde. Einige hatten den Bash-Pfad vor \ Windows \ System32, andere nach. Außerdem zeigt der Windows-Befehl "where find" alle "find" in Pfadreihenfolge an.
PseudoNoise