human
Avec la commande :
```ls -la *
```
Je peux lister tous mes liens symboliques.
Comment puis-je supprimer tous les liens symboliques qui sont liés à un dossier spécial ?
Par exemple :
Dans mon répertoire ```usr/local/bin```, j'ai les entrées suivantes :
```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
```
Maintenant, je veux supprimer tous les liens avec le chemin ```/usr/local/texlive/``
gpt
Veuillez vous assurer de lire la réponse alternative. Elle est encore plus précise bien qu'elle n'ait pas été votée aussi haut pour le moment.
Vous pouvez utiliser ceci pour supprimer tous les liens symboliques :
```find -type l -delete
```
avec les versions récentes de ```find```.
Sur les anciennes versions de ```find```, cela peut être :
```find -type l -exec rm {} \;
# ou
find -type l -exec unlink {} \;
```
Pour limiter à une certaine cible de lien, en supposant que aucun des chemins ne contient de caractère de nouvelle ligne :
``` find -type l | while IFS= read -r lnkname; do if [ "$(readlink '$lnkname')" == "/your/exact/path" ]; then rm -- "$lnkname"; fi; done
```
ou bien formaté de manière agréable :
``` find -type l |
 while IFS= read -r lnkname;
 do
   if [ "$(readlink '$lnkname')" = "/your/exact/path" ];
   then
     rm -- "$lnkname"
   fi
 done
```
Le ```if``` pourrait bien sûr inclure une condition plus complexe, comme une correspondance avec ```grep```.

Adapté à votre cas :
```find -type l | while IFS= read -r lnk; do if (readlink "$lnk" | grep -q '^/usr/local/texlive/'); then rm "$lnk"; fi; done
```
ou bien formaté de manière agréable :
```find -type l | while IFS= read -r lnk
do
  if readlink "$lnk" | grep -q '^/usr/local/texlive/'
  then
    rm "$lnk"
  fi
done
```