110 votes

Lien symbolique: trouver tous les fichiers qui se lient à ce fichier

Bonjour à tous, j'ai besoin de faire cela sur Linux :

  • Donné : nom du fichier 'foo.txt'
  • Rechercher : tous les fichiers qui sont des liens symboliques vers 'foo.txt'

Comment faire ? Merci !

127voto

DigitalRoss Points 80400

Il 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 chemin/vers/foo.txt

D'autre part, 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 # ignorer les composants du chemin d'accès en tête

19voto

dogbane Points 85749

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

$ ls -i foo.txt
41525360 foo.txt

$ find . -follow -inum 41525360

Alternativement, 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

9voto

Nik Points 451

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

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

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

Pour trouver un lien symbolique spécifique, il suffit d'utiliser grep :

symlinks -rv . | grep foo.txt

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