2009-05-19 6 views
13

Esto puede ser un duplicado como creo que ya he visto algo así, pero no lo encuentro más, así que estoy pidiendo:Grep: obtener todos los archivos que no tiene una línea que coincide con

tengo un montón de archivos con líneas múltiples, y en la mayoría de los casos, uno de la línea contiene un cierto patrón. Me gustaría tener cada archivo que no tenga una línea con este patern.

EDITAR: Solo necesita usar la opción grep "-L". Este es un duplicado, estoy seguro, pero no encuentro la parte posterior originales ...

+0

¿Por qué Me sale -1 por este? – claf

+0

Supongo que alguien pensó que la información estaba disponible en el manual. – JesperE

+0

Si ha encontrado una respuesta, no edite su pregunta con ella, * publique * la respuesta en su lugar. Hoy en día puedes incluso aceptar tus propias respuestas. – JesperE

Respuesta

24

la respuesta fue sólo para obtener la opción "-L" con el fin de tener el archivo sin patrón ... ¡Debería haber leído al hombre más cuidadosamente!

6

Grep vuelve 0/1 para indicar si había un partido, por lo que puede hacer algo como esto:

for f in *.txt; do 
    if ! grep -q "some expression" $f; then 
     echo $f 
    fi 
done 

EDITAR: también puede utilizar la opción -L:

grep -L "alguna expresión" *

+0

sin necesidad de bucle solo tiene que usar la opción "-L" de grep. – claf

0

tratar "recuento" y filtro en el que es igual a ": 0":

grep -c [pattern] * | grep ":0" 

(si se utiliza TurboGREP tos, usted no tiene una opción -L;))

+0

Parece que TurboGREP tiene -l y -v, por lo que podría usar 'grep -lv 'expr' *'. – amertune

+0

si turbogrep funciona como gnu grep, -lv no hace lo que usted quiere. te muestra todos los archivos con cualquier línea que no coincida con la expresión. –

Cuestiones relacionadas