2009-05-19 3 views
13
Spiele

Dies ist ein Duplikat sein kann, wie ich glaube, ich sah schon so etwas, aber kann es nicht mehr finden, so frage ich:Grep: alle Datei, die nicht eine Linie hat, die

Ich habe eine Menge Dateien mit mehreren Zeilen, und in den meisten Fällen enthält eine Zeile ein bestimmtes Patern. Ich hätte gerne jede Datei, die keine Zeile mit diesem Patern hat.

EDIT: Nur müssen Sie die "-L" Grep Option verwenden. Dies ist ein Duplikat, ich bin sicher, aber nicht finde das Original zurück ...

+0

warum tat Ich bekomme -1 für diesen? – claf

+0

Meine Vermutung ist, dass jemand dachte, dass Informationen im Handbuch leicht verfügbar waren. – JesperE

+0

Wenn Sie eine Antwort gefunden haben, editieren Sie Ihre Frage nicht damit, * post * stattdessen die Antwort. Heutzutage können Sie sogar Ihre eigenen Antworten akzeptieren. – JesperE

Antwort

24

die Antwort war einfach die "-L" Option, um ohne die Datei zu haben, um Muster ... hätte den Mann sorgfältiger lesen sollen!

6

Grep gibt 0/1, um anzuzeigen, ob es eine Übereinstimmung war, so dass man etwas tun kann:

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

EDIT: Sie können auch die Option -L verwenden:

grep -L "einigen Ausdruck" *

+0

keine Notwendigkeit für die Schleife muss nur "-L" -Option von Grep verwenden. – claf

0

versuchen "count" und Filter, wo gleich "0":

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

(wenn Sie TurboGREP verwenden Husten, werden Sie kein -L-Schalter haben;))

+0

TurboGREP scheint -l und -v zu haben, also könnten Sie einfach 'grep -lv 'expr' *' verwenden. – amertune

+0

wenn turbogrep wie gnu grep funktioniert, tut -lv nicht, was du willst. Es zeigt Ihnen alle Dateien mit einer Zeile an, die nicht mit dem Ausdruck übereinstimmt. –