web-dev-qa-db-fra.com

Comment puis-je supprimer la cible d'un lien symbolique sans supprimer le lien lui-même?

J'ai un lien symbolique ~/Desktop/test.txt qui pointe vers ~/rendu/test.txt.

Je connais UNIQUEMENT le chemin de ~/Desktop/test.txt, je veux un moyen rapide de supprimer ~/rendu/test.txt SANS supprimer le lien symbolique.

Pour ceux qui veulent savoir pourquoi: j'ai un fichier nommé crypted.xxx sur mon bureau, qui est crypté et contient mon mot de passe.

Lorsque je veux mettre à jour mon fichier crypté, je le déchiffre et il crée crypted.txt dans un répertoire spécial. Je fais donc un lien vers ce fichier sur mon bureau pour des raisons pratiques. Mais après avoir regardé mon crypted.txt, je souhaite supprimer rapidement ce crypted.txt (mais pas le lien situé sur le bureau).

10
Ugo Hed

en utilisant find pour trouver le lien symbolique, puis en utilisant readlink pour obtenir le chemin complet de la cible jusqu'à rm:

find ~/Desktop/ -type l -name 'test.txt' -exec bash -c 'rm "$(readlink -f "$1")"' _ {} \;

Ou comme vous connaissez déjà le nom du lien:

rm "$(readlink -f ~/Desktop/test.txt)"
11
heemayl

Utilisez simplement:

printf "" > "$(readlink '/path/to/link')"

à effacer le fichier, ou

rm "$(readlink '/path/to/link')"

à supprimer le fichier.

5
Jacob Vlijm