Dateien, auf die ich keine Berechtigung habe, mit "find" nicht anzeigen lassen

3 Antworten

Hallo

Immer, wenn ich den Befehl "find" benutze (im Terminal), bekomme ich neben den Dateien, die ich eigentlich gesucht habe, noch viele andere Ergebnisse, die mir aber nur sagen, dass ich auf ein bestimmtes Verzeichnis oder eine bestimmte Datei keine Berechtigung habe.

Wenn Du auch da suchen lässt wo Dein Benutzer keine Rechte hat, dann ist das nur logisch.

Kann man diese Dateien irgendwie von der Suche mit "find" ausschließen?

Du kannst diese Meldungen unterdrücken indem Du an Dein Kommando noch ein

2>/dev/null

anhängst. Die 2 ist der Fehlerkanal und der Rest lenkt diesen ins Nirwana.

Aber es wäre wohl richtiger wenn Du einfach nicht ab / sondern ab /home/$USER suchen würdest.

Linuxhase

Woher ich das weiß:eigene Erfahrung – Ich benutze seit 2007 Linux und habe LPIC101 und LPIC102

plusquam11 hat dir zwar schon eine Antwort gegeben, die ist aber nur fast richtig.

Die Meldungen, die du nicht sehen möchtest, sind Fehlermeldungen und werden nicht auf das sogenannte Standard-Ausgabe-Gerät ( stdout) sondern auf das Standard-Fehler-Ausgabegerät (stderr) ausgeben.

In beiden Fällen ist das aber der Monitor. Glücklicherweise kann man diese Geräte doch "trennen". Die Shell ( bash) "kennt" die Standard-Ausgabe als "1", die Fehlermeldungen als "2" . So mit können sie auch umgelenkt werden

Bei find konnte das so aussehen:

find ./ -name der-gesuchte 1>~/gefunden 2>~/fehler

in deinem Homeverzeichnis gibt es dann 2 Dateien "gefunden" und "fehler"

die 1>~/gefunden kann man weglassen, dann kommt alles auf den Monitor. Um die "gefunden" Ergebnisse in einer Datei zu speichern, würde auch (ohne die 1 )
>~/gefunden ausreichen.

Woher ich das weiß:Berufserfahrung – openSuSE seit 1995

Würde das so gehen?

find -iname "*.odp" 2> /dev/null

Also dass die ganzen Fehlermeldungen nach /dev/null geleitet werden? Ich kann das im Moment nicht ausprobieren, weil ich nicht zu Hause bin, und deshalb nicht an meinen Laptop kann. :)