it-swarm.com.de

Wie überspringe ich "Berechtigung verweigert" -Fehler, wenn ich find unter Linux ausführe?

Mögliches Duplikat:
Wie entferne ich Ausdrucksanweisungen mit dem Titel "Berechtigung verweigert" aus dem Suchprogramm?

Wenn ich diesen Befehl unter Linux (SuSE) ausführe:

find / -name ant

Ich erhalte viele Fehlermeldungen des Formulars:

find: `/etc/cups/ssl': Permission denied

Nimmt find ein Argument, um das Anzeigen dieser Fehler zu überspringen, und versucht nur Dateien, auf die ich zugreifen darf?

146
user710818

sie können Nachrichten an stderr herausfiltern. Ich ziehe es vor, sie so auf stdout umzuleiten.

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

Erklärung:

Kurz gesagt, alle regulären Ausgaben gehen an die Standardausgabe (stdout). Alle Fehlermeldungen zum Standardfehler (stderr).

grep findet/druckt normalerweise die angegebene Zeichenfolge, die -v invertiert dies, sodass jeder String gefunden/gedruckt wird, der nicht "Berechtigung verweigert" enthält. Alle Ihre Ausgaben des Befehls find, einschließlich der Fehlermeldungen, die normalerweise an stderr (Dateideskriptor 2) gesendet werden, gehen jetzt zu stdout (Dateideskriptor 1) und werden dann nach grep Befehl.

Dies setzt voraus, dass Sie das bash/sh Shell.

Unter tcsh/csh würden Sie verwenden

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