löschen - linux symbolic link directory



Gibt es eine Möglichkeit zu überprüfen, ob es symbolische Links gibt, die auf ein Verzeichnis verweisen? (6)

Es gibt keine direkte Möglichkeit, solche Symlinks zu überprüfen. Bedenken Sie, dass Sie möglicherweise ein Dateisystem haben, das nicht ständig gemountet ist (z. B. ein externes USB-Laufwerk), das Symlinks zu einem anderen Volume im System enthalten könnte.

Sie könnten etwas tun mit:

for a in `find / -type l`; do echo "$a -> `readlink $a`"; done | grep destfolder

Ich -lname fest, dass die find FreeBSD die Option -lname nicht unterstützt, weshalb ich das oben -lname .

https://ffff65535.com

Ich habe einen Ordner auf meinem Server, auf den ich eine Reihe von symbolischen Links hatte. Ich habe seitdem einen neuen Ordner erstellt und möchte alle symbolischen Links ändern, um auf den neuen Ordner zu verweisen. Ich hatte überlegt, den ursprünglichen Ordner durch einen Symlink in den neuen Ordner zu ersetzen, aber es scheint, dass wenn ich mit dieser Übung weitermache, es sehr schnell sehr unordentlich werden könnte.

Was ich gemacht habe, ist, die Symlinks manuell zu ändern, um auf den neuen Ordner zu zeigen, aber ich habe vielleicht ein paar verpasst.

Gibt es eine Möglichkeit zu überprüfen, ob es irgendwelche Symlinks gibt, die auf einen bestimmten Ordner zeigen?


Ich würde den Suchbefehl verwenden.

find . -lname /particular/folder

Das rekursiv sucht das aktuelle Verzeichnis nach Symlinks zu /particular/folder . Beachten Sie, dass nur absolute Symlinks gefunden werden. Ein ähnlicher Befehl kann verwendet werden, um nach allen Symlinks zu suchen, die auf Objekte mit dem Namen "folder" zeigen:

find . -lname '*folder'

Von dort müssten Sie alle falschen Positive aussortieren.


find . -type l -printf '%p -> %l\n'

find /foldername -type l -exec ls -lad {} \;

Für Hardlinks können Sie den Inode Ihres Verzeichnisses mit einer der "ls" Optionen ( -i , denke ich) erhalten.

Dann findet ein find mit -inum alle gängigen Hardlinks.

Für Softlinks müssen Sie möglicherweise ein ls -l für alle Dateien, die nach dem Text suchen, nach "->" ausführen und ihn normalisieren, um sicherzustellen, dass es sich um einen absoluten Pfad handelt.


Sie können Symlinks mit dem von Mark Lord geschriebenen Programm Symlinks auditieren - es wird ein gesamtes Dateisystem scannen, Symlink-Pfade auf absolute Form normalisieren und sie auf Stdout drucken.





symlink