5 votos

Terminal: grep recursiva - no buscar en el enlace contenido

Cuando la búsqueda con grep -r, evita siguientes enlaces simbólicos por defecto. Esto es cierto para los directorios, pero grep todavía 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 impresiones:

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

Esto hace que la búsqueda en este tipo de estructuras tres veces más lento.

¿Cómo puedo hacer grep excluir a los enlaces simbólicos?

2voto

user3439894 Puntos 5883

Si usted mira en la página man para grep, no hay ninguna opción para excluir a los enlaces simbólicos, y por lo tanto un método alternativo será necesario aplicar. Uno de estos métodos es el uso de find a la salida solo archivo de rutas de acceso utilizando el -type t opción, donde t se establece en f de archivo regular.

Ejemplo:

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

Donde 'search' es lo que sea que estés greping, y la salida será la ruta de acceso relativa de nombre de archivo del archivo(s) que contiene porque de uso -l con grep.

En el ejemplo anterior, grep será ejecutado para cada ruta de acceso relativa de nombre de archivo , que find pasa a
-exec. Como grep puede manejar varios nombres de archivo, puede cambiar el ;, al final del comando, + de decirle a find a pasar todas la coincidencia de los nombres de archivo a grep a la vez. Tenga en cuenta que si el número de la coincidencia de los nombres de archivo es grande, entonces la longitud permitida de la línea de comandos puede ser superado.

También tenga en cuenta que find tiene un gran conjunto de opciones, y, como tal, usted puede ser capaz de reducir la salida pasa grep, dependiendo de sus necesidades.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X