Am 26.07.2005 um 17:06 schrieb Harald Huthmann:
suche ein script welches kaputte links im Dateisystem aufspührt. So etwas wurde vor langer Zeit hier auf der Liste mal gepostet. War glaube ich, sogar ein Einzeiler. Komme aber nicht mehr drauf....
Sowas kann man sich von Hand zusammenbasteln: Evtl. eine For-Schleife. "find -type l" findet alle Symlinks und gibt sie aus; für jedes Ergebnis überprüft "test -e", ob der Symlink auf eine existierende Datei zeigt: for i in `find -type l` ; do test -e "$i" || echo $i done Ist simpel und intuitiv, aber versagt, wenn die Dateinamen Leerzeichen enthalten. Deshalb kann man mit "find -print0" die Ergebnisfelder durch Nullen (\x00, nicht 0) voneinander trennen lassen. "xargs" spaltet das ganze dann wieder an den Nullen auf und führt pro Ergebnis den Test aus: find -type l -print0 | xargs -0i sh -c 'test -e "{}" || echo "{}"' Bei Debian gibt's ein nettes Paket namens "symlinks" -- ob es das bei SuSE auch gibt, weiß ich nicht. Es kann rekursiv alle Symlinks inkl einer Statusangabe ausgeben. So bekommst du alle toten Symlinks einfach mit symlinks -r /dir | grep ^dangling Es besitzt auch eine Funktion, die tote Links selbsttätig löscht, sowie andere manchmal sinnvolle Funktionen auf Symlinks. Vermutlich ist es bei einem großen Dateibaum deutlich schneller als der obere Ansatz, da nicht für jedes Ergebnis eine einzelne Shell- Instanz erzeugt werden muss. Gruß, Dennis -- Private Mails bitte an dennis@...! Alles, was an lists@stosberg.net geht und nicht über die Liste kommt, verschwindet ungesehen im Müll.