Digamos que necesito encontrar la función GetTypes()
en todo el archivo fuente de C # ( .cs
) los directorios / subdirectorios.
Solía grep -rn GetTypes *.cs
, pero recibí un error con grep: *.cs: No such file or directory
. Tuve que usar grep -rn GetTypes *
, pero en este caso muestra todos los archivos no *.cs
solo.
¿Qué comando necesito usar para encontrar la cadena solo en los .cs
archivos?
Respuestas:
Si tu caparazón es bash ≥4, ponlo
shopt -s globstar
en tu~/.bashrc
. Si tu caparazón es zsh, estás bien. Entonces puedes correr**/*.cs
significa todos los archivos que coinciden*.cs
en el directorio actual, o en sus subdirectorios, de forma recursiva.Si no está ejecutando un shell que admite
**
pero su grep es compatible--include
, puede hacer un grep recursivo y decirlegrep
que solo considere archivos que coincidan con ciertos patrones. Tenga en cuenta las comillas alrededor del patrón de nombre de archivo: se interpreta por grep, no por el shell.Con solo herramientas portátiles (algunos sistemas no tienen
grep -r
nada), usefind
para la parte transversal del directorio ygrep
para la parte de búsqueda de texto.fuente
globstar
opción para una corriente Bash 4+ cáscara, utilice:shopt -s globstar
.Deberías revisar el pequeño y gigante reemplazo grep / find conocido como
ack
. Está específicamente configurado para buscar en directorios de archivos de código fuente.Su comando se vería así:
fuente
Si usa GNU
grep
, puede especificar qué archivos incluir en un recorrido recursivo del directorio:(donde el último período denota el directorio de trabajo actual como raíz del recorrido)
fuente
Estoy usando una combinación de find y grep:
Para
find
, puede reemplazar.
por un directorio y eliminar-name
si desea buscar en cada archivo.Para
grep
,-bn
imprimirá la posición y el número de línea y--color
ayudará a sus ojos resaltando lo que está buscando.fuente