lien symbolique: recherche tous les fichiers qui pointent vers ce fichier

Bonjour tout, je dois le faire sous linux:

  • donné: nom de fichier ' foo.txt"
  • Find: tous les fichiers qui sont des liens symboliques vers ' foo.txt"

Comment le faire? Merci!

88
demandé sur skaffman 2011-05-31 12:26:20

3 réponses

Cela dépend, si vous essayez de trouver des liens vers un fichier spécifique appelé foo.txt, alors c'est le seul bon moyen:

find -L / -samefile path/to/foo.txt

D'un autre côté, si vous essayez simplement de trouver des liens vers n'importe quel fichier qui s'appelle foo.txt, alors quelque chose comme

find / -lname foo.txt

Ou

find . -lname \*foo.txt # ignore leading pathname components
103
répondu DigitalRoss 2015-09-08 15:07:55

Trouvez le numéro d'inode du fichier, puis recherchez tous les fichiers avec le même numéro d'inode:

$ ls -i foo.txt
41525360 foo.txt

$ find . -follow -inum 41525360

Sinon, essayez l'option lname de find, mais cela ne fonctionnera pas si vous avez des liens symboliques relatifs, par exemple a -> ../foo.txt

$ find . -lname /path/to/foo.txt
17
répondu dogbane 2011-05-31 08:41:50

Je préfère utiliser l'utilitaire symlinks, qui est également pratique lors de la recherche de liens symboliques cassés. Installer par:

sudo apt install symlinks

Affiche tous les liens symboliques dans le dossier et les sous-dossiers actuels:

symlinks -rv .
  • -r: récursif
  • -v: verbose (afficher tous les liens symboliques, pas seulement ceux qui sont cassés)

Pour trouver un lien symbolique, juste grep:

symlinks -rv . | grep foo.txt
1
répondu Nik 2017-08-11 13:57:53