Estoy buscando en un repositorio de Git y me gustaría incluir la .git
carpeta.
grep
no incluye esta carpeta si ejecuto
grep -r search *
¿Cuál sería un comando grep para incluir esta carpeta?
Estoy buscando en un repositorio de Git y me gustaría incluir la .git
carpeta.
grep
no incluye esta carpeta si ejecuto
grep -r search *
¿Cuál sería un comando grep para incluir esta carpeta?
Respuestas:
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 .*
solo coincidirá con los archivos ocultos. Sin embargo, esto fallará si no hay archivos no ocultos o archivos ocultos en un directorio determinado. Por supuesto, podría agregar explícitamente en .git
lugar de .*
.
Sin embargo, si simplemente desea buscar en un directorio determinado, hágalo así:
grep -r search .
El .
coincidirá con la ruta actual, que incluirá archivos ocultos y no ocultos.
.*
incluirá el directorio principal (porque ..
coincide)
Me acabo de encontrar con este problema y, según la respuesta de @ bitmask, aquí está mi modificación simple para evitar el problema señalado por @sehe:
grep -r search_string * .[^.]*
sudo grep -r ANDROID_HOME * .[^.]*
¿qué estoy haciendo mal aquí?
Quizás prefiera combinar "grep" con el comando "buscar" para obtener una solución completa como:
find . -exec grep -Hn search {} \;
Este comando buscará dentro de archivos o directorios ocultos la cadena de "búsqueda" y enumerará cualquier archivo que coincida con este formato de salida:
Ruta del archivo: 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
Es posible que desee utilizar este enfoque, asumiendo que está buscando en el directorio actual (de lo contrario, reemplácelo con el directorio deseado):
find . -type f | xargs grep search
o si solo desea buscar en el nivel superior (que es más rápido de probar si los está probando):
find . -type f -maxdepth 1 | xargs grep search
ACTUALIZACIÓN: Modifiqué los ejemplos en respuesta a los comentarios de Scott. También agregué "-tipo f".
~
es el directorio de inicio del usuario. La pregunta no era sobre el directorio de inicio del usuario, por lo que la respuesta no debería mencionarse ~
. (2) En un find
comando, -name '*'
es un no-op (es decir, no sirve para nada).
Para buscar SOLO en todos los archivos y directorios ocultos de su ubicación actual:
find . -name ".*" -exec grep -rs search {} \;
SOLO todos los archivos ocultos:
find . -name ".*" -type f -exec grep -s search {} \;
SOLO todos los directorios ocultos:
find . -name ".*" -type d -exec grep -rs search {} \;
Para buscar solo dentro de una carpeta determinada, puede usar:
ls -al | grep " \."
Es un comando muy simple para listar y canalizar a grep.
Además de la sugerencia de Tyler, aquí está el comando para grep todos los archivos y carpetas de forma recursiva, incluidos los archivos ocultos
find . -name "*.*" -exec grep -li 'search' {} \;
Para evitar que coincidan .
y ..
que no sean archivos ocultos, puede usar grep
con ls -A
like en este ejemplo:
ls -A | grep "^\."
^\.
establece que el primer carácter debe ser .
La opción -A
o --almost-all
excluye los resultados .
y, ..
por lo tanto, solo los archivos y directorios ocultos coinciden.
También puede buscar tipos específicos de archivos ocultos, como archivos de directorio ocultos:
grep -r --include=*.directory "search-string"
Esto puede funcionar mejor que algunas de las otras opciones. Las otras opciones que funcionaron pueden ser demasiado lentas.