Wie tote links finden?
Hallo Leute, 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.... Gruß Harald
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.
On Tue, 26 Jul 2005 17:45:44 +0200, Dennis Stosberg <lists@stosberg.net> wrote:
Am 26.07.2005 um 17:06 schrieb Harald Huthmann:
[..]
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.
Unter SuSE gibt es das Programm "cleanlinks", was zumindest tote Links löschen kann. MfG Kay
Harald Huthmann wrote:
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....
Meinst Du vielleicht: http://marc.theaimsgroup.com/?l=suse-linux&m=104006585723035&w=2 Wie gut, dass es ein Archiv gibt *wink_mit_dem_zaunpfahl*... :-) CU, Th.
Am Dienstag, 26. Juli 2005 20:04 schrieb Thomas Hertweck:
Harald Huthmann wrote:
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....
Meinst Du vielleicht: http://marc.theaimsgroup.com/?l=suse-linux&m=104006585723035&w=2 Wie gut, dass es ein Archiv gibt *wink_mit_dem_zaunpfahl*... :-)
Danke für den Zaunpfahl. Ich habe noch "find / -type l -print | perl -nle '-e || -print'" gefunden. Es ist nicht was ich meinte. (Kam ohne perl aus) Der Betreff in Deinem link (Archiv) nennt sich: "Re: immernoch Symlinks" Du hast nicht danach gesucht. Das hattest Du abgespeichert!. Gib es zu :-) Dank und Gruß Harald
Harald Huthmann wrote:
[... http://marc.theaimsgroup.com/?l=suse-linux&m=104006585723035&w=2 ...]
Der Betreff in Deinem link (Archiv) nennt sich: "Re: immernoch Symlinks" Du hast nicht danach gesucht. Das hattest Du abgespeichert!. Gib es zu :-)
Neee, ich muss Dich enttaeuschen, ich habe tatsaechlich im Archiv gesucht und bin mit der ersten Suchanfrage schon auf die Loesung gestossen :-) Allerdings wirst Du anhand der Suchbegriffe (es waren "readlink find link") erkennen, dass ich ungefaehr wusste, wonach zu suchen war - ganz fair war es somit tatsaechlich nicht, sorry :-) Kannst es selbst gerne probieren[1], der dritte Link von oben wird Dich direkt zu Jan's Skript bringen. Cheers, Thomson [1]http://marc.theaimsgroup.com/?l=suse-linux&w=2&r=1&s=readlink+find+link&q=b
participants (4)
-
Dennis Stosberg
-
Harald Huthmann
-
Kay Patzwald
-
Thomas Hertweck