Quiero buscar una cadena de texto en todos los archivos en un directorio (y no en sus subdirectorios; sé que la -r
opción lo hace, pero eso no es lo que quiero).
Corriendo
grep "string" /path/to/dir
se 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
grep
en varios archivos.grep "string" .bashrc .bash_aliases
funciona 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 -s
opción, pero fue en vano.
Entonces, mis preguntas:
¿Por qué no puedo usar
grep
en 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
grep
eso 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
?
grep "string" .bash*
.
grep "string" * .* 2>/dev/null
ogrep -s "string" * .*
*
, conocido como globbing. Globbing no incluye nombres de archivo que comienzan con un punto.bashrc
como 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/glob