Mit dem Befehl:
ls -la *
Ich kann alle meine symbolischen Links auflisten.
Wie kann ich alle symbolischen Links entfernen, die mit einem bestimmten Ordner verknüpft sind?
Zum Beispiel:
In meinem Verzeichnis habe usr/local/bin
ich folgende Einträge:
lrwxrwxrwx 1 root root 50 Apr 22 14:52 allneeded -> /usr/local/texlive/2011/bin/x86_64-linux/allneeded
lrwxrwxrwx 1 root root 47 Apr 22 14:52 amstex -> /usr/local/texlive/2011/bin/x86_64-linux/amstex
lrwxrwxrwx 1 root root 24 Apr 23 19:09 arara -> /home/marco/.arara/arara
Jetzt möchte ich alle Links mit dem Pfad entfernen /usr/local/texlive/
Antworten:
Bitte lesen Sie unbedingt die alternative Antwort . Es geht sogar noch mehr um den Punkt, obwohl zu diesem Zeitpunkt noch nicht so hoch gestimmt wurde.
Hiermit können Sie alle symbolischen Links löschen:
mit modernen
find
Versionen.In älteren Versionen muss es möglicherweise sein:
So beschränken Sie sich auf ein bestimmtes Linkziel, vorausgesetzt, keiner der Pfade enthält ein Zeilenumbruchzeichen:
oder schön formatiert
Das
if
könnte natürlich auch eine komplexere Bedingung wie das Anpassen eines Musters mit einschließengrep
.Auf Ihren Fall zugeschnitten:
oder schön formatiert:
quelle
-print
am Ende desfind
Befehls hinzufügen , um ein visuelles Feedback zu erhalten.Mit einem modernen
find
, der unterstützt-lname
:Sollte es tun.
quelle
find /usr/local/bin
find
gibt es schon-lname
länger als ich es gewartet habe (seit ungefähr 2003).find
meine ich wirklich GNUfind
. ;) Ich habe es benutztusr/local/bin
, weil es das ist, was das OP benutzt hat.Die
find
Lösung ist großartig.Nur für den Fall, dass Ihre Suche dies nicht unterstützt
-lname
, finden Sie hier eine andere Methode, bei der nur shell und verwendet werdenreadlink
.quelle
Mit
zsh
:$REPLY:P
Löst den Pfad zu einem symlinkfreien Pfad vollständig auf, so dass unter der Annahme, dass er/usr/local/texlive
selbst symlinkfrei ist, alle Dateien entfernt werden, unter denen nach der symlink-Auflösung/usr/local/textlive
Links zu,/usr/local/texlive/foo
aber auch zu../texlive/bar
oder zu/usr/./local/texlive/whatever
oder auf/some/other/symlink
die selbst ein symlink verweist/usr/local/texlive
, usw .quelle
Gehen Sie zu path your und legen Sie Ihre Pfadkonfiguration fest
quelle
usr/local/bin
denengrep
gesucht wird,grep -E
ist der Weg zu gehen. Sonst gäbe es keine passenden Ergebnisse. Auchh
inls
dient hier keinem Zweck!-h, --human-readable : with -l, print sizes in human readable format (e.g., 1K 234M 2G)
. Weitereman ls
man grep