78 votes

Existe-t-il un moyen de vérifier s’il existe des liens symboliques pointant vers un répertoire?

J'ai un dossier sur mon serveur à qui j'avais un certain nombre de liens symboliques qui pointent. Depuis, j'ai créé un nouveau dossier et je veux changer de tous ces liens symboliques pour pointer vers le nouveau dossier. J'avais envisagé de remplacer le dossier d'origine par un lien symbolique vers le nouveau dossier, mais il me semble que si je continue avec cette pratique, il pourrait devenir très salissant très rapide.

Ce que j'ai fait est de modifier manuellement les liens symboliques pour pointer vers le nouveau dossier, mais j'ai peut-être manqué un couple.

Est-il un moyen de vérifier s'il y a des liens symboliques pointant vers un dossier particulier?

95voto

skymt Points 2156

J'utiliserais la commande find.

 find . -lname /particular/folder
 

Cela va rechercher récursivement dans le répertoire en cours des liens symboliques vers /particular/folder . Notez qu'il ne trouvera que des liens symboliques absolus. Une commande similaire peut être utilisée pour rechercher tous les liens symboliques pointant sur des objets appelés "dossier":

 find . -lname '*folder'
 

À partir de là, vous devrez éliminer tous les faux positifs.

7voto

JJK Points 41

Vous pouvez également auditer les liens symboliques avec http://linux.die.net/man/8/symlinks - cela analysera tout un système de fichiers, normalisera les chemins des liens symboliques au format absolu et les imprimera sur stdout.

6voto

Greg Hewgill Points 356191

Il n'y a pas vraiment de moyen direct de rechercher de tels liens symboliques. Pensez que vous pouvez avoir un système de fichiers qui n'est pas monté tout le temps (par exemple, un lecteur USB externe), qui peut contenir des liens symboliques vers un autre volume du système.

Vous pourriez faire quelque chose avec:

 for a in `find / -type l`; do echo "$a -> `readlink $a`"; done | grep destfolder
 

Je remarque que les find FreeBSD ne supportent pas l'option -lname , c'est pourquoi je me suis retrouvé avec ce qui précède.

2voto

stephanea Points 619

À part regarder tous les autres dossiers s’il existe des liens pointant vers le dossier original, je ne pense pas que ce soit possible. Si c'est le cas, cela m'intéresserait.

1voto

bfabry Points 396
find / -lname 'fullyqualifiedpathoffile'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X