Puedes usar acuse de recibo. Es como grep para el código fuente. Puede escanear todo su sistema de archivos con él.
Solo haz:
ack 'text-to-find-here'
En su directorio raíz.
También puede usar expresiones regulares, especificar el tipo de archivo, etc.
ACTUALIZAR
Acabo de descubrir The Silver Searcher, que es como ack pero de 3 a 5 veces más rápido e incluso ignora los patrones de un .gitignore
archivo.
Haz lo siguiente:
grep -rnw '/path/to/somewhere/' -e 'pattern'
-r
o-R
es recursivo,-n
es el número de línea, y-w
significa coincidir con la palabra completa.-l
(L minúscula) se puede agregar para dar simplemente el nombre de archivo de los archivos coincidentes.-e
es el patrón utilizado durante la búsqueda
Junto con estos, --exclude
, --include
, --exclude-dir
las banderas podrían usarse para una búsqueda eficiente:
- Esto solo buscará en aquellos archivos que tengan extensiones .c o .h:
grep --include=\*.{c,h} -rnw '/path/to/somewhere/' -e "pattern"
- Esto excluirá la búsqueda de todos los archivos que terminen con la extensión .o:
grep --exclude=\*.o -rnw '/path/to/somewhere/' -e "pattern"
- Para los directorios, es posible excluir uno o más directorios usando el
--exclude-dir
parámetro. Por ejemplo, esto excluirá los directorios dir1/, dir2/ y todos ellos que coincidan con *.dst/:
grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/somewhere/' -e "pattern"
Esto funciona muy bien para mí, para lograr casi el mismo propósito que el tuyo.
Para obtener más opciones, consulte man grep
.
Utilice grep -ilR
:
grep -Ril "text-to-find-here" /
i
significa ignorar caso (opcional en su caso).R
significa recursivo.l
significa "mostrar el nombre del archivo, no el resultado en sí"./
significa comenzar en la raíz de su máquina.