Me está costando encontrar la búsqueda de coincidencias en el directorio actual y en sus subdirectorios.
Cuando ejecuto find *test.c
solo me da las coincidencias en el directorio actual. (no se ve en subdirectorios)
Si lo intento find . -name *test.c
, esperaría los mismos resultados, pero en cambio me da solo coincidencias que están en un subdirectorio. Cuando hay archivos que deben coincidir en el directorio de trabajo, me da:find: paths must precede expression: mytest.c
¿Qué significa este error y cómo puedo obtener las coincidencias tanto del directorio actual como de sus subdirectorios?
find
de msysgit puede arrojar este error a menos que se rodea el patrón con citas:find . -name "*test.c"
. (En caso de que elija preferirlo sobre Windows 'diferentefind.exe
y usar desde cmd)Respuestas:
Intente ponerlo entre comillas: se está encontrando con la expansión comodín del shell, por lo que lo que realmente está pasando para encontrar se verá así:
... causando el error de sintaxis. Intenta esto en su lugar:
Tenga en cuenta las comillas simples alrededor de la expresión de su archivo: estas detendrán el shell (bash) expandiendo sus comodines.
fuente
echo *test.c
... el resultado no será eco expandiendo el comodín, sino el propio shell. La lección simple es si estás usando comodines, cita la especificación del archivo :-)find . -type f -printf ‘%TY-%Tm-%Td %TT %p\n’
como se encuentra en la web, y me encontré con "las rutas deben preceder a la expresión". El problema era que las comillas eran demasiado "inteligentes". Reescribí el comando, haciendo que se reemplazaran las comillas, y se ejecutó.find
: si usa un comodín*.$variable
, necesita comillas dobles.Lo que sucede es que el shell está expandiendo "* test.c" en una lista de archivos. Intenta escapar del asterisco como:
fuente
find . -name '*txt'
Intenta ponerlo entre comillas:
fuente
Desde el manual de búsqueda:
fuente
Me encontré con esta pregunta cuando intentaba encontrar varios nombres de archivo que no podía combinar en una expresión regular como se describe en la respuesta de @Chris J, esto es lo que funcionó para mí
-o
o-or
es lógico OR. Consulte Búsqueda de archivos en Gnu.org para obtener más información.Estaba ejecutando esto en CygWin.
fuente
En mi caso, me faltaba el
/
rastro en el camino.fuente
/
No se requiere un seguimiento .