linux - estructura - ¿Cómo uso grep para buscar en el directorio actual todos los archivos que tienen una cadena "hola" pero que solo muestran archivos.h y.cc?
linux grep string (7)
La forma más simple: grep -Ril "Your text" /
¿Cómo uso grep para buscar en el directorio actual todos y cada uno de los archivos que contengan la cadena "hello" y que muestren solo archivos .h y .cc?
Puede pasar comodines en lugar de especificar nombres de archivos o usar stdin.
grep hello *.h *.cc
Si leo su pregunta cuidadosamente, solicita "grep para buscar en el directorio actual todos y cada uno de los archivos que contengan la cadena" hello "y mostrar solo los archivos .h y .cc". Para cumplir con sus requisitos precisos aquí está mi presentación:
Esto visualiza los nombres de archivo:
grep -lR hello * | egrep ''(cc|h)$''
... y esto muestra los nombres y contenidos de los archivos:
grep hello `grep -lR hello * | egrep ''(cc|h)$''`
Si necesita una búsqueda recursiva, tiene una variedad de opciones. Deberías considerar ack
.
En su defecto, si tiene GNU find
y xargs
:
find . -name ''*.cc'' -print0 -o -name ''*.h'' -print0 | xargs -0 grep hello /dev/null
El uso de /dev/null
garantiza la impresión de los nombres de los archivos; el -print0
y -0
trata de nombres de archivos que contienen espacios (líneas nuevas, etc.).
Si no tiene nombres turbulentos (con espacios, etc.), puede usar:
find . -name ''*.*[ch]'' -print | xargs grep hello /dev/null
Esto podría recoger algunos nombres que no pretendía, porque la coincidencia de patrón es más difusa (pero más simple), pero de lo contrario funciona. Y funciona con versiones que no son de GNU de find
y xargs
.
find . -name /*.cc -print0 -or -name /*.h -print0 | xargs -0 grep "hello"
find . -name /*.cc -print0 -or -name /*.h -print0 | xargs -0 grep "hello"
.
Consulte las páginas del manual para find
y xargs
para más detalles.
grep -l hello **/*.{h,cc}
Es posible que desee shopt -s nullglob
para evitar mensajes de error si no hay archivos .h o no .cc.
grep -r --include=*.{cc,h} "hello" .
Esto dice: buscar recursivamente (en todos los subdirectorios también) para todos los archivos .cc OR .h que contengan "hello" en este .
(directorio actual