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 *.cssolo.
¿Qué comando necesito usar para encontrar la cadena solo en los .csarchivos?

Respuestas:
Si tu caparazón es bash ≥4, ponlo
shopt -s globstaren tu~/.bashrc. Si tu caparazón es zsh, estás bien. Entonces puedes correr**/*.cssignifica todos los archivos que coinciden*.csen 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 decirlegrepque 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 -rnada), usefindpara la parte transversal del directorio ygreppara la parte de búsqueda de texto.fuente
globstaropció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-namesi desea buscar en cada archivo.Para
grep,-bnimprimirá la posición y el número de línea y--colorayudará a sus ojos resaltando lo que está buscando.fuente