polecenie find nie działa w cygwinie

10

Podczas próby uruchomienia komend find w cygwin ciągle pojawia się błąd

„ZNAJDŹ: Niepoprawny format parametru”

Jednak te same polecenia działają w systemie Linux. Co się dzieje?

dggoldst
źródło

Odpowiedzi:

13

Używasz komendy Windows, a nie cygwina.

Wyraźnie to widać, jeśli wpiszesz „które znajdują”

Aby to naprawić, edytuj swoją ścieżkę (Właściwości systemu -> Zaawansowane -> Zmienne środowiskowe -> Zmienne systemowe -> Ścieżka) i przenieś wpis dla cygwin na początek ścieżki. (Aby to zrobić, wystarczy skopiować całą ścieżkę, wkleić ją do Notatnika, edytować i wkleić z powrotem).

Jak wskazano w komentarzach, inną drogą jest edycja skryptów startowych bash i zmiana tam ścieżki. Powiedziałbym nawet, że jest to preferowane rozwiązanie, ponieważ znalazłem przypadek, w którym posiadanie wersji cygwins najpierw spowodowało problem.

dggoldst
źródło
5
to może nie być idealna poprawka; alternatywą jest edycja plików startowych bash w celu dodania ścieżek Cygwin do ścieżki systemowej zamiast ich dołączania. główna różnica polega na tym, czy najpierw chcesz znaleźć wersje Cygwin podczas uruchamiania poleceń w standardowych powłokach Windows CMD lub Explorer.
szarlatan
cygwin przygotowuje własne ścieżki do globalnej. więc jego dość dziwny OP dostaje ten błąd.
akira
Dobry punkt kwak!
dggoldst
2

Nie mogłem uruchomić poprawnego polecenia „znajdź” w powłoce poleceń systemu Windows, a modyfikacja PATH nie pomogła. Ale to zadziałało:

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

Wyraźna ścieżka uruchomiła właściwe „find” iz dowolnego powodu działa tylko podczas uruchamiania w bash.

DarenW
źródło
To działało dla mnie najlepiej. Tworzyłem skrypt, który można uruchomić na różnych komputerach, które już miały bash. Niektórzy mieli ścieżkę bash przed \ Windows \ System32, ale niektórzy mieli ją później. Ponadto polecenie systemu Windows „znajdź” pokaże wszystkie „znajdź” w kolejności ścieżek.
PseudoNoise