2011-11-18 18 views
7

Come eseguire una ricerca ricorsiva usando grep mentre si esclude una particolare directory?Come escludere una directory in una ricerca ricorsiva usando grep?

Contesto: ho una directory di grandi dimensioni costituita da file di registro che vorrei eliminare nella ricerca. Il modo più semplice è spostare la cartella del registro. Purtroppo non posso farlo, poiché il progetto richiede la posizione.

Qualche idea su come farlo?

risposta

10

stai cercando questo?

dalla pagina man grep:

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

Grazie mille, a volte mi dimentico, c'è anche la pagina man :) – Kiran

+0

@KiranChandrashekhar Si prega di accettare la risposta data. – FailedDev

+2

Le versioni precedenti di grep non hanno questo flag che è un vero peccato :(. – ale

0

Come alternativa, se è possibile utilizzare find nella ricerca, può anche essere utile:

find [directory] -name "*.log" -prune -o -type f -print|grep ...
Il [directory] può effettivamente essere la directory corrente se si vuole (solo un . farà).

La parte successiva, -name "*.log" -prune è tutto insieme. Cerca nomi di file con il modello *.log e li eliminerà dai risultati.

successivo è -o (per "o")

Poi, -type f -print che dice "stampare (allo stdout) qualsiasi tipo che è un file."

Questi risultati devono includere ogni file (nessuna directory viene restituita) trovato in [directory] tranne quelli che terminano in .log. Quindi puoi grep i risultati di cui hai bisogno.

Problemi correlati