Wie trenne ich alle symbolischen Links im Verzeichnis?

Wie trenne ich alle symbolischen Links im Verzeichnis?

Ich möchte die symbolischen Links folgendermaßen aufheben:

unlink *

Allerdings heißt esunlink: extra operand

Ich möchte nur die Linkdatei löschen und die Originaldatei behalten.

Antwort1

Mit dem „*“ versuchen Sie, die Verknüpfung aller Dateien und Verzeichnisse unter Ihrem aktuellen Standort aufzuheben.

„unlink“ kann keine Dateien oder Verzeichnisse verarbeiten, sondern nur Links. Verwenden Sie den Befehl „find“, um alle Links zu finden und deren Verknüpfung wie folgt aufzuheben:

find . -type l -exec unlink {} \;

Antwort2

Ich würde vermeiden, andere Prozesse mit zu erzeugen find … -exec …. Wenn Sie unlinkoder rmdie Ergebnisse von benötigen find, verwenden Sie dessen-deleteOption stattdessen.

find . -maxdepth 1 -type l -delete

Dieser Befehl findet alle symbolischen Links ( -type l) im aktuellen Verzeichnis (nicht in Unterverzeichnissen; Ihr Verzeichnis *wechselt nicht in Unterverzeichnisse, daher nehme ich an, dass dies Ihr Wunsch ist) und löscht sie. Das Standardverhalten besteht darin, symbolischen Links nicht zu folgen, sodass die Originaldateien nicht betroffen sind.

Antwort3

Dieser Befehl findet und entfernt alle Symlinks im aktuellen Ordner, rekursiert nicht in Unterordner und ignoriert Dotfiles

find . -maxdepth 1 -type l ! -name '.*' -delete

verwandte Informationen