unix find Befehl auf cmder.exe in Windows

3886
Heisenbug

Ich habe den cmder Shell Emulator für Windows installiert .

Funktioniert gut, aber ich kann den Suchbefehl von Unix nicht verwenden. Anscheinend, wenn ich tippe:

'find .' 

Im Terminal wird versucht, den Windows-Befehl FIND zu verwenden, und es wird folgender Fehler ausgegeben:

FIND: Parameter format not correct 

Ich würde gerne find verwenden, einen Hinweis, wie man es zum Laufen bringt?

8
Sie müssen das Verzeichnis, in dem sich "find" befindet, vor "C: \ Windows \ System32" (wo Windows 'Leben findet) in der Umgebungsvariable "PATH" erscheinen lassen. Dies wird im Allgemeinen als keine großartige Idee betrachtet, da dies andere Programme verwirrt, die eine Standard-Windows-Umgebung erwarten. Stattdessen sollten Sie sehen, ob Sie ein Startskript in Cmder festlegen können, und das Skript dazu bringen, etwas wie `set PATH = C: \ Pfad \ in \ Ordner \ mit \ unix \ find;% PATH%` zu tun Bob vor 6 Jahren 1
"Cmder" kenne ich nicht, aber in Linux / Unix zeigt "which -a find" alle Programme, die mit dem Befehl find ausgeführt werden könnten. Identifizieren Sie das Unix `find`. Verwenden Sie dann den vollständigen Pfad oder ordnen Sie die Reihenfolge der PATH-Verzeichnisse neu an, oder legen Sie einen Aliasnamen fest, wenn cmder dies unterstützt. Sie können auch das Windows `find.exe` in` wfind.exe` umbenennen. Wenn es `bash` emuliert, können Sie den eingebauten` type -a find` verwenden. AFH vor 6 Jahren 0
@AFH [das Umbenennen von Windows-Systemdateien ist riskant, da Windows-Updates oder `sfc / scannow` es wiederherstellen können.] (Https://superuser.com/a/1208043/241386) phuclv vor 6 Jahren 0
@ LưuVĩnhPhúc - Gute Verbindung. Vielen Dank. AFH vor 6 Jahren 0
Mögliches Duplikat von [Wie kann ich C: \ Windows \ System32 \ convert.exe umbenennen?] (Https://superuser.com/questions/1208018/how-do-i-rename-c-windows-system32-convert-exe ) phuclv vor 6 Jahren 1
@AFH `which -a find` gibt` / c / WINDOWS / system32 / find / usr / bin / find` zurück. Leider führt das Ausführen von `/ usr / bin / find` zu `Das System kann den angegebenen Pfad nicht finden. ' Es scheint, dass der tatsächliche Windows-Pfad hier benötigt wird. Wenn Sie `type` ausführen, wird das Fenster` type` gestartet, und es scheint, dass cmder nicht die Unix-ähnliche Version bereitstellt. simlev vor 6 Jahren 0
@simlev - Wie Sie sagen, Cygwin oder (wenn unter Win10) WSL ist die bessere Wahl, obwohl es weniger einfach ist, native Windows-Programme aufzurufen, die für den Fragesteller nicht geeignet sind. AFH vor 6 Jahren 0
Möglicherweise möchten Sie "% git_install_root%" dahin verschieben, wo der neue "PATH" in "init.bat" erstellt wird, siehe https://github.com/cmderdev/cmder/issues/37 Bob vor 6 Jahren 0

2 Antworten auf die Frage

8
simlev

Die einfachste Lösung ist das Erstellen eines Alias ​​für die findausführbare Datei im cmderInstallationsordner:

λ which find /c/WINDOWS/system32/find λ find --help FIND: FIND: Parameter format not correct λ alias find=C:\Files\Programs\cmder\vendor\git-for-windows\usr\bin\find.exe $* λ find --help Usage: /usr/bin/find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression] 

Darf ich vorschlagen, dass Sie Cygwin auch ausprobieren, wo es unter anderem sofortfind funktioniert. Das ist, was ich verwendet habe, um den Standort des cmderLieferers zu ermitteln find.exe.

Ein dickes Lob an @Bob und @AFH für ihre aufschlussreichen Kommentare und an @ Lưu Vĩnh Phúc für den Vorschlag einer anderen, unkomplizierten Lösung:

benennen Sie den * nix findwie einen anderen Namen umfnd.exe

Dies könnte tatsächlich preferrable über einen Aliasnamen erstellen, weil cmderAliase in Windows 10 nicht funktionieren, es sei denn, Use legacy consolein ausgewählt ist cmdEigenschaften (siehe, wie man es tun).

Danke für den Vorschlag. Scheint der beste Weg zu gehen. Normalerweise verwende ich cygwin unter Windows, aber aus beruflichen Gründen bin ich jetzt gezwungen, zu cmder zu gehen. Ich werde es so schnell wie möglich versuchen! Heisenbug vor 6 Jahren 0
@Heisenbug `cmder` hat den offensichtlichen Vorteil, dass es portabel ist und keine Installation von einem privilegierten Benutzer erforderlich ist. simlev vor 6 Jahren 0
Sie können den * nix `find` auch in einen anderen Namen wie` fnd.exe` umbenennen phuclv vor 6 Jahren 0
Ich habe die Unix-Version umbenannt, um zu vermeiden, dass natives Windows-Material geändert wird. Aber danke, was mir wirklich gefehlt hat, war der Ordner, in dem diese Befehle gespeichert wurden und Ihre Antwort hat mir geholfen. Heisenbug vor 6 Jahren 0
Ist gnu find normalerweise nicht auf gnu-Systemen genannt? kalle vor 6 Jahren 0
2
Jerem

Cmder\vendor\git-for-windows\usr\binwird dem PFAD durch hinzugefügt Cmder\vendor\init.bat. Leider ist es am Ende von PATH hinzugefügt worden, so dass die find.exe von Windows zuerst gefunden wird.

Zum Glück ist es einfach zu beheben. Fügen Sie einfach diese Zeile hinzu Cmder\config\user-profile.cmd:

set "PATH=%GIT_INSTALL_ROOT%\usr\bin;%PATH%"