it-swarm.com.de

"Zugriff verweigert" herausnehmen

Wenn ich find verwende, um alle PDF-Dateien im Verzeichnis /home anzuzeigen, wird access denied angezeigt. Um sie zu beseitigen, habe ich versucht:

find /home -iname "*.pdf" | grep -v "access denied"

Das Ergebnis ist jedoch dasselbe. Wie kann ich diese Zeilen loswerden?

9
solfish

Was Sie versucht haben, hat nicht funktioniert, weil die Ausgabe von access denied Fehler sind und auf STDERR anstelle von STDOUT gesendet werden, das an grep weitergeleitet wird.

Sie können diese Fehler vermeiden, indem Sie nur STDERR umleiten

find /home -iname "*.pdf" 2>/dev/null

Oder als David Foerster kommentierte können wir prägnanter schließen STDERR

find /home -iname "*.pdf" 2>&-

Ich vermute jedoch, dass Sie eigentlich nur Ihr Zuhause durchsuchen möchten und nicht das anderer Benutzer. Vielleicht möchten Sie es also wirklich

find ~ -iname "*.pdf"

Wenn dies zu Fehlern führt, kann es in Ihrer lokalen Konfiguration zu falschen Besitzern kommen, die Sie untersuchen sollten.

19
Zanna

Der verweigerte Zugriff wird wahrscheinlich auf stderr und nicht auf stdout gedruckt.

Versuche dies:

find /home -iname "*.pdf" 2>&1 | grep -v "access denied"

Der 2>&1 leitet die Ausgabe von stderr nach stdout um, damit grep -v seinen Job machen kann. (Standardmäßig leitet | nur stdout und nicht stderr.)

8
Android Dev