Comment dissocier tous les liens symboliques du répertoire?

1

Je voudrais dissocier les liens symboliques comme ceci:

unlink *

Cependant il dit unlink: extra operand

Je voudrais seulement supprimer le fichier de lien, garder le fichier original.

ours blanc
la source
Je pense que le problème est que unlinkn'accepte pas plus d'un fichier
Paul Stelian
En outre, vous voudrez peut-être utiliser rm, cela a exactement le même effet que unlinkpour les fichiers.
Paul Stelian,
1
Utilisez trouver avec -execou xargs.
Seth

Réponses:

2

En utilisant le "*", vous essayez de dissocier tous les fichiers et répertoires de votre emplacement actuel.

unlink ne peut pas gérer les fichiers ou les répertoires, il ne peut gérer que les liens, utilisez la commande find pour rechercher tous les liens et les dissocier, comme ceci:

find . -type l -exec unlink {} \;
Elacheche
la source
Cela fonctionne pour moi, merci! find . -type lest utile aussi.
Whitebear
unlinkpeut supprimer tout type de fichier sur mon système. rmappelle unlinkquand même l'appel système
Paul Stelian
0

Je voudrais éviter de générer d'autres processus avec find … -exec …. Lorsque vous avez besoin de unlinkou rmdes résultats de find, utilisez son -deleteoption à la place.

find -maxdepth 1 -type l -delete

Cette commande trouvera tous les liens symboliques ( -type l) dans le répertoire en cours (pas dans les sous-répertoires; votre *descendance ne descend pas dans les sous-répertoires, donc je suppose que c'est ce que vous voulez) et les supprimera. Le comportement par défaut est de ne pas suivre les liens symboliques afin que les fichiers d'origine ne soient pas affectés.

Kamil Maciorowski
la source