Verwenden Sie grep, um Dateien, die mit einem Muster übereinstimmen, NICHT anzuzeigen.

0

Ich bin sehr vertraut mit der Verwendung von grep mit der Pipe, um alles auszuschließen, was einem Muster nicht entspricht. Aber kann ich mit grep alles ausschließen, was einem Muster entspricht? Ich dachte, das würde funktionieren

-v

Option wie unten:

find / media -name "somenamehere" | grep -v "Berechtigung verweigert"

Das funktioniert aber nicht. Irgendeine Idee warum nicht und was sollte ich stattdessen tun?

confused
quelle

Antworten:

1

Das " Permission denied " von find wird an ausgegeben stderr eher, als stdout , und das grep Teil hat keinen Einfluss auf das, was in stderr angezeigt wird. Sie können sie auf zwei Arten herausfiltern:

Umleitung von stderr zu /dev/null

find /media -name "somenamehere" 2>/dev/null

Stderr nach stdout umleiten

find /media -name "somenamehere" 2>&1 | grep -v "Permission denied"

Zusätzliche Ressourcen für die Umleitung von Eingabe und Ausgabe

Deltik
quelle
DANKE DIR!!! Es macht total Sinn, aber ich hätte das nie alleine gewusst. # 1 oben hat wunderbar funktioniert und scheint der einfachere der beiden zu sein, aber habe ich Recht zu glauben, dass # 2 sicherer sein könnte, falls ein anderer Fehler (nicht "Permission denied") vorliegt, der wichtig zu sehen ist? Können Sie sich Beispiele nennen? Normalerweise versuche ich nur zu sehen, ob eine Datei (wie ein Foto auf einer CF-Karte) noch in Sicherungsverzeichnisse kopiert wurde. Aber gibt es Zeiten, in denen diese Fehler nützlich sind? Nochmals vielen Dank!
confused
@confused: Sie können stderr-Fehler alternativ für eine spätere Überprüfung in einer Datei speichern 2>stderr.log anstatt 2>/dev/null. Sie könnten dann öffnen stderr.log und sehen, was Sie vielleicht übersehen haben.
Deltik