Mögliches Duplikat:
Wie entferne ich Ausdruckanweisungen vom Typ „Zugriff verweigert“ aus dem Suchprogramm?
Wenn ich diesen Befehl unter Linux (SuSE) ausführe:
find / -name ant
Ich erhalte viele Fehlermeldungen in der Form:
find: `/etc/cups/ssl': Permission denied
Ist find
ein Argument erforderlich, um die Anzeige dieser Fehler zu überspringen und nur Dateien auszuprobieren, für die ich eine Zugriffsberechtigung habe?
Antwort1
Sie können Nachrichten an herausfiltern stderr
. Ich leite sie lieber an stdout
Folgendes weiter.
find / -name art 2>&1 | grep -v "Permission denied"
Erläuterung:
Kurz gesagt: Alle regulären Ausgaben gehen an die Standardausgabe ( stdout
). Alle Fehlermeldungen an die Standardfehlerausgabe ( stderr
).
grep
findet/druckt normalerweise den angegebenen String, der -v
invertiert dies, so dass er jeden String findet/druckt, dernichtenthalten „Zugriff verweigert“. Ihre gesamte Ausgabe des Find-Befehls, einschließlich Fehlermeldungen, die normalerweise an stderr
(Dateideskriptor 2) gesendet werden, geht jetzt an stdout
(Dateideskriptor 1) und wird dann vom grep
Befehl gefiltert.
Dies setzt voraus, dass Sie die Shell verwenden bash/sh
.
Unter tcsh/csh
würden Sie verwenden
find / -name art |& grep ....