Avec la commande:
ls -la *
Je peux lister tous mes liens symboliques.
Comment puis-je supprimer tous les liens symboliques 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/
Réponses:
Assurez-vous de lire la réponse alternative . C'est encore plus pertinent, même s'il n'est pas voté aussi haut.
Vous pouvez l'utiliser pour supprimer tous les liens symboliques:
avec les
find
versions modernes .Sur les anciennes versions de find, il se peut que ce soit:
Pour limiter à une certaine cible de lien, en supposant qu'aucun des chemins ne contienne de caractère de nouvelle ligne:
ou bien formaté
Cela
if
pourrait bien sûr aussi inclure une condition plus complexe telle que l’appariement d’un motifgrep
.Adapté à votre cas:
ou bien formaté:
la source
-print
à la fin de lafind
commande pour obtenir un retour visuel.Avec un moderne
find
qui supporte-lname
:devrait le faire.
la source
find /usr/local/bin
find
a eu-lname
pendant plus longtemps que je l'ai maintenu (depuis environ 2003).find
je voulais vraiment dire GNUfind
. ;) J'ai utiliséusr/local/bin
, parce que c'est ce que l'OP a utilisé.La
find
solution est géniale.Juste au cas où votre recherche ne prend pas en charge
-lname
, voici une autre méthode qui utilise uniquement shell etreadlink
.la source
Avec
zsh
:$REPLY:P
résout complètement le chemin vers un chemin sans lien symbolique, donc en supposant que ce/usr/local/texlive
soit un lien symbolique libre, il supprimera tous les fichiers qui, après la résolution du lien symbolique/usr/local/textlive
, contiennent des liens vers/usr/local/texlive/foo
mais également vers../texlive/bar
ou vers/usr/./local/texlive/whatever
ou/some/other/symlink
qui est lui-même un lien symbolique pointant vers/usr/local/texlive
, etc. .la source
Allez au chemin votre et définissez vous-même la configuration du chemin
la source
usr/local/bin
celuigrep
-ci,grep -E
c'est le chemin à parcourir. Sinon, il n'y aurait aucun résultat correspondant. Aussih
dansls
ne sert à rien ici!-h, --human-readable : with -l, print sizes in human readable format (e.g., 1K 234M 2G)
. Pour plus d'informationsman ls
ou voirman grep