¿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
grep -r -o -i "your_string" *
(o *.*
, u otra especificación de archivo). Los errores pueden ser ignorados. Si recibe muchos errores, puede agregarlos 2>/dev/null
al final, lo que redirigirá stderr a un dispositivo nulo.
grep -r -o -i "your_string" *
(con "comillas).