2012-04-29 54 views
62

Estoy buscando a través de un repositorio de Git y me gustaría incluir la carpeta .git.¿Cómo puedo grep archivos ocultos?

grep no incluye esta carpeta si funciono

grep -r search * 

lo que sería un comando grep para incluir esta carpeta?

Respuesta

85

Consulte la solución al final de esta publicación como una mejor alternativa a lo que está haciendo.

Puede incluir explícitamente archivos ocultos (un directorio también es un archivo).

grep -r search * .* 

El * coincidirá con todos los archivos excepto los ocultos y .* coincidirá con los archivos sólo ocultos. Sin embargo, esto fallará si no hay archivos no ocultos o no hay archivos ocultos en un directorio determinado. Por supuesto, podría agregar explícitamente .git en lugar de .*.

Sin embargo, si lo único que desea buscar en un directorio dado, hacerlo de esta manera:

grep -r search . 

El . coincidirá con la trayectoria de la corriente, que incluirá tanto los archivos no ocultos y escondidos.

+0

El primer enfoque funcionó para mí. El segundo enfoque (grep -r búsqueda.) No encontró la cadena. Encontré resultados similares al omitir la "-r" y buscar solo en el directorio de nivel superior. Estoy usando GNU grep 2.6.3. – Alan

+0

@ Alan: Eso es extraño. Yo uso esto regularmente ¿Lo probaste en el mismo directorio? – bitmask

+0

Sí, lo hice. Por cierto, los resultados son los mismos ya sea que use tcsh o bash. Es un sistema Debian 5 de 64 bits, por lo que eso vale. – Alan

2

Tal vez usted prefiere combinar "grep" con el "hallazgo" de comandos para soluciones completas como

find . -exec grep -Hn search {} \; 

Este comando buscará archivos o directorios dentro ocultos para cadena "búsqueda" y una lista de cualquier archivo con una coincidencia con este formato de salida:

archivo ruta: número de línea: línea con coincidencia

./foo/bar:42:search line 
./foo/.bar:42:search line 
./.foo/bar:42:search line 
./.foo/.bar:42:search line 
1

es posible que desee utilizar este enfoque:

find ~ -name '*' | xargs grep search 

o si lo que desea buscar en el nivel superior (que es más rápido para poner a prueba si está tratando de éstos hacia fuera):

find ~ -maxdepth 1 -name '*' | xargs grep search 
0

Todas las otras respuestas son mejores.Éste podría ser fácil de recordar:

find . -type f | xargs grep search 

sólo encuentra archivos (incluyendo ocultos) y grep cada archivo

3

simplemente me encontré con este problema, y ​​en base a la respuesta de @ máscara de bits, aquí está mi simple modificación evitar el problema señalado por @sehe:

grep -r search_string * .[^.]* 
+0

no obtengo ningún resultado usando esto: 'sudo grep -r ANDROID_HOME *. [^.] *' ¿qué estoy haciendo mal aquí? – messerbill

+0

@messerbill ¿dónde está ejecutando la búsqueda? – insaner

0

para buscar dentro de sólo todos los archivos ocultos y directorios desde su ubicación actual:

find . -name ".*" -exec grep -rs search {} \; 

sólo todos los archivos ocultos:

find . -name ".*" -type f -exec grep -s search {} \; 

sólo todos los directorios ocultos: (. Grep -r búsqueda * *)

find . -name ".*" -type d -exec grep -rs search {} \; 
Cuestiones relacionadas