Quiero buscar todos los archivos de forma recursiva desde el directorio en el que estoy para una cadena particular.
Lo intenté
grep -r -i my_string
y lo probé en una carpeta de prueba con dos archivos pequeños pero no encontraba la cadena.
Además, ¿hay alguna forma especial de definir "contiene" en lugar de hacer coincidir la palabra completa?
grep -r -o -i "your_string" *
(con "comillas).Respuestas:
¿Está buscando un nombre de archivo o una palabra dentro de un archivo? grep busca dentro de los archivos, que parece ser lo que quieres.
grep usa expresiones regulares; de hecho, eso es lo que significa la parte "re". Por lo tanto, no utiliza los comodines bash normales; es decir,
abc*
no encontraría palabras que comenzaran con abc, encontraría palabras que comenzaran con ab, luego cero o más c seguidas. Pero sí, si simplemente le da un patrón, lo encontrará en cualquier lugar, sin conocimiento de palabras completas. Si quisiera encontrar palabras completas, necesitaría crear una expresión regular para decirlo.Pero, como la mayoría de los comandos, debe colocar los nombres de archivo al final del comando, por lo que su ejemplo simplemente se quedaría allí y esperaría el nombre de archivo.
Como dijo @plink, use
(o
*.*
, u otra especificación de archivo). Los errores pueden ser ignorados. Si recibe muchos errores, puede agregarlos2>/dev/null
al final, lo que redirigirá stderr a un dispositivo nulo.fuente