web-dev-qa-db-fra.com

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

Bonjour à tous, je dois le faire sous Linux:

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

Comment faire? Merci!

101
lukmac

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'autre part, si vous essayez simplement de trouver des liens vers le fichier any qui porte le nom foo.txt, alors quelque chose comme

find / -lname foo.txt

ou

find . -lname \*foo.txt # ignore leading pathname components
120
DigitalRoss

Recherchez le numéro d'inode du fichier, puis recherchez tous les fichiers portant 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
19
dogbane

Je préfère utiliser l'utilitaire symlinks, qui est également pratique pour rechercher des liens symboliques rompus. Installer par:

Sudo apt install symlinks

Afficher tous les liens symboliques dans le dossier actuel et les sous-dossiers:

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

Pour trouver un lien symbolique spécifique, il suffit de grep:

symlinks -rv . | grep foo.txt
2
Nik