Wie überspringe ich „Zugriff verweigert“-Fehler beim Ausführen von „find“ unter Linux?

Wie überspringe ich „Zugriff verweigert“-Fehler beim Ausführen von „find“ unter Linux?

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 findein 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 stdoutFolgendes 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).

grepfindet/druckt normalerweise den angegebenen String, der -vinvertiert 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 grepBefehl gefiltert.

Dies setzt voraus, dass Sie die Shell verwenden bash/sh.

Unter tcsh/cshwürden Sie verwenden

 find / -name art |& grep ....

verwandte Informationen