2009-10-28 23 views
5

Estoy tratando de grep múltiples extensiones dentro de la actual y todas las subcarpetas.grep multiple extension current y subcarpetas

grep -i -r -n 'hello' somepath/*.{php,html} 

Esto solo agrupa la carpeta actual pero no las subcarpetas.

¿Cuál sería una buena forma de hacerlo?

Respuesta

2

Uno de ellos:

find '(' -name '*.php' -o -name '*.html' ')' -exec grep -i -n hello {} + 
find '(' -name '*.php' -o -name '*.html' ')' -print0 | xargs -0 grep -i -n hello 
9

Usando sólo grep:

grep -irn --include='*.php' --include='*.html' 'hello' somepath/ 
+0

Eso es la solución más ordenada. ¿Existe la posibilidad de combinar los patrones de inclusión? Estuve jugando con patrones glob, pero nunca lo hice funcionar correctamente. :-( – Christoph

0

que estaba buscando lo mismo y cuando se decidió hacer un script bash Empecé con CodeSearch vim y sorprender ya lo hacía antes ¡antes de!

#!/bin/bash 
context="$3" 
#ln = line number mt = match mc = file 
export GREP_COLORS="sl=32:mc=00;33:ms=05;40;31:ln=" 
if [[ "$context" == "" ]]; then context=5; fi 
grep --color=always -n -a -R -i -C"$context" --exclude='*.mp*'\ 
--exclude='*.avi'\ 
--exclude='*.flv'\ 
--exclude='*.png'\ 
--exclude='*.gif'\ 
--exclude='*.jpg'\ 
--exclude='*.wav'\ 
--exclude='*.rar'\ 
--exclude='*.zip'\ 
--exclude='*.gz'\ 
--exclude='*.sql' "$2" "$1" | less -R 

pega este código en un CodeSearch archivo llamado y establecer el chmod a 700 o 770 supongo que esto podría ser mejor que aquí para la próxima vez que se me olvidó

este script mostrará con colores las partidos y el contexto en torno a

./codesearch '/full/path' 'string to search' 

y opcional que definen el número de línea de contexto en torno a 5 por defecto

./codesearch '/full/path' 'string to search' 3 

he editado el código y añade un poco de caramelo del ojo

ejemplo ./codesearch ./ 'eval' 2 screenshot codesearch

tiene este aspecto cuando se ha activado "permitir que el parpadeo de texto" en la terminal de