2011-11-18 33 views
7

¿Cómo hacer una búsqueda recursiva usando grep excluyendo un directorio en particular?¿Cómo excluir un directorio en una búsqueda recursiva usando grep?

Antecedentes: Tengo un gran directorio que consiste en archivos de registro que me gustaría eliminar en la búsqueda. La forma más fácil es mover la carpeta de registro. Desafortunadamente no puedo hacer eso, ya que el proyecto ordena la ubicación.

¿Alguna idea de cómo hacerlo?

Respuesta

10

¿Estás buscando esto?

de la página de manual de grep:

--exclude-dir=DIR 
      Exclude directories matching the pattern DIR from recursive searches. 
+0

Gracias ton, a veces me olvido, también hay página de manual :) – Kiran

+0

@KiranChandrashekhar Por favor, acepte la respuesta. – FailedDev

+2

Las versiones anteriores de grep no tienen esta bandera, lo que es una pena :(. – ale

0

Como alternativa, si se puede usar find en su búsqueda, también puede ser útil:

find [directory] -name "*.log" -prune -o -type f -print|grep ...
El [directory] puede ser en realidad el directorio actual si lo desea (solo un . lo hará).

La siguiente parte, -name "*.log" -prune es todo junto. Busca nombres de archivo con el patrón *.log y los eliminará de sus resultados.

siguiente es -o (a favor "o")

Entonces, -type f -print que dice "de impresión (la salida estándar) cualquier tipo que es un archivo".

Esos resultados deben incluir todos los archivos (no se devuelven directorios) que se encuentran en [directory] excepto aquellos que terminan en .log. Entonces puede grep los resultados que necesite.

Cuestiones relacionadas