el comando find no parece funcionar en cygwin

10

Cuando intento ejecutar comandos de búsqueda en cygwin, sigo recibiendo el error

"ENCONTRAR: el formato del parámetro no es correcto"

Sin embargo, los mismos comandos se ejecutan en Linux. ¿Que esta pasando?

dggoldst
fuente

Respuestas:

13

Estás utilizando el comando de búsqueda de Windows, no el de cygwin.

Esto queda claro si escribe 'which find'

Para solucionarlo, edite su ruta (Propiedades del sistema -> Avanzado -> Variables de entorno -> Variables del sistema -> Ruta) y mueva la entrada de cygwin al frente de la ruta. (Una manera fácil de hacer esto es copiar toda la ruta, pegarla en el Bloc de notas, editarla allí y pegarla de nuevo).

Como se señaló en los comentarios, otra ruta es editar los scripts de inicio de bash y cambiar la ruta allí. Incluso diría que esta es la solución preferida, ya que ahora he encontrado un caso en el que tener versiones de cygwins primero causó un problema.

dggoldst
fuente
55
esto podría no ser la solución ideal; una alternativa es editar los archivos de inicio de bash para anteponer las rutas de Cygwin a la ruta del sistema en lugar de agregarlas. La principal diferencia es si desea o no que las versiones de Cygwin se encuentren primero al ejecutar comandos en los shells CMD o Explorer estándar de Windows.
quack quijote
Cygwin está anteponiendo sus propios caminos al global. así que es bastante extraño OP obtener ese error.
akira
Buen punto graznido!
dggoldst
2

No pude ejecutar correctamente el 'hallazgo' cuando estaba en el shell de comandos de Windows, y el ajuste de la RUTA no ayudó. Pero esto funcionó:

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

La ruta explícita activó el 'hallazgo' correcto, y por cualquier razón, solo funciona cuando se ejecuta en bash.

DarenW
fuente
Esto funcionó mejor para mí. Estaba creando un script que podía ejecutarse en varias máquinas que ya tenían bash. Algunos tenían la ruta bash antes de \ Windows \ System32, pero otros la tenían después. Además, el comando de Windows "where find" le mostrará todos los "find" en orden de ruta.
PseudoNoise