Dateien, auf die ich keine Berechtigung habe, mit "find" nicht anzeigen lassen
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. Kann man diese Dateien irgendwie von der Suche mit "find" ausschließen? Also so, dass mir "find" wirklich nur Dateien/Verzeichnisse anzeigt, auf die ich auch eine Berechtigung habe?
Danke im Voraus. :)
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
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.
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. :)