Terminal: grep recursivo - no busque en el contenido del enlace simbólico

1

Al buscar con grep -r , evita seguir los enlaces simbólicos de forma predeterminada. Esto es cierto para los directorios, pero grep aún inspecciona el contenido de los archivos que son enlaces simbólicos.

Por ejemplo, si tengo un marco con la siguiente estructura:

+-- MyFancy.framework
    +-- MyFancy              (symlink to ./Versions/A/MyFancy)
    +-- Versions
        +-- A
            +-- MyFancy      (the actual binary file)
        +-- Current
            +-- MyFancy      (symlink to ../A/MyFancy)

grep -r "string" MyFancy.framework imprime:

Binary file ./MyFancy matches
Binary file ./Versions/A/MyFancy matches
Binary file ./Versions/Current/MyFancy matches

Esto hace que la búsqueda en dichas estructuras sea tres veces más lenta.

¿Cómo puedo hacer que grep excluya enlaces simbólicos?

    
pregunta Elist 28.06.2017 - 12:06

1 respuesta

0

Si observa la página de manual para grep , no hay opción para excluir enlaces simbólicos y, por lo tanto, será necesario aplicar un método alternativo. Uno de estos métodos es usar find para generar solo rutas de archivo usando la opción -type t , donde t se establece en f para regular archivo .

Ejemplo:

 find . -type f -exec grep -l 'search' {} \; 

Donde 'search' es lo que sea para lo que está grep ing, y output será el nombre de archivo de ruta relativa del archivo (s) que lo contiene debido a que usa -l con grep .

En el ejemplo anterior, grep se ejecutará para cada nombre de archivo de ruta relativa que find pasa a
-exec . Como grep puede manejar múltiples nombres de archivos , puede cambiar ; , al final del comando , a + para decirle a find que pase todo los nombres de archivo correspondientes a grep a la vez. Tenga en cuenta que si el número de nombres de archivo coincidentes es grande, se podría exceder la longitud permitida de la línea de comando .

También tenga en cuenta que find tiene un conjunto bastante grande de opciones , y como tal, puede reducir la salida que se pasa grep , dependiendo de tus necesidades.

    
respondido por el user3439894 28.06.2017 - 18:43

Lea otras preguntas en las etiquetas