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!
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
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
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