Quiero buscar una cadena de texto en todos los archivos en un directorio (y no en sus subdirectorios; sé que la -ropción lo hace, pero eso no es lo que quiero).
Corriendo
grep "string" /path/to/dirse supone que es capaz de hacer esto, lo he leído, pero me da el error:
grep: dir: es un directorio
A continuación, intenté ejecutar
grepen varios archivos.grep "string" .bashrc .bash_aliasesfunciona perfectamente.grep "string" .bash*Funciona según lo previsto también.grep "string" *me da los errores:grep: data: Is a directory grep: Desktop: Is a directory grep: Documents: Is a directory grep: Downloads: Is a directory ...
Solo se imprimen los errores, no obtengo las líneas coincidentes. Intenté usar la -sopción, pero fue en vano.
Entonces, mis preguntas:
¿Por qué no puedo usar
grepen un directorio, como en (1), cuando debería poder? Lo he visto en muchos ejemplos en Internet.
Editar : cuando digo "usar grep en un directorio", me refiero a "buscar en todos los archivos de ese directorio, excepto sus subdirectorios". Creo que esto es lo que hace grep cuando le pasa un directorio en lugar de un archivo. ¿Soy incorrecto?Por favor, dame una explicación sobre el funcionamiento de
grepeso explicaría el comportamiento de los comandos en (2).
Editar : Déjame ser más específico. ¿Por qué el uso de comodines para especificar múltiples archivos para buscar trabajo.bash*y no con*o incluso./*?¿Cómo puedo buscar todos los archivos en un directorio (y no en sus subdirectorios) usando
grep?

*, conocido como globbing. Globbing no incluye nombres de archivo que comienzan con un punto.bashrccomo el estándar. Puede establecer opciones de shell para que incluya estos archivos, pero puede meterse en un lío si no sabe lo que está haciendo. Puede encontrar una buena guía para comprender el gloging aquí mywiki.wooledge.org/globgrep "string" .bash*.grep "string" * .* 2>/dev/nullogrep -s "string" * .*