Recherche de tous les liens symboliques et physiques vers un fichier sous UNIX


9

Si j'ai un fichier spécifique dans un système de fichiers UNIX, existe-t-il un moyen d'utiliser bash pour trouver tous les liens vers ce fichier, qu'ils soient symboliques ou physiques? Si j'ai besoin de commandes différentes pour chacune, quelles sont-elles?

Réponses:


8

Essayez ceci avec GNU find:

find /start/dir -L -samefile /file/to/check -exec ls -li {} \;

Exemple de sortie:

1234704 -rw-r--r-- 2 user1 user1 1134 2009-09-11 11:12 ./x1
1234704 -rw-r--r-- 2 user1 user1 1134 2009-09-11 11:12 ./x2
1234983 lrwxrwxrwx 1 user1 user1 2 2009-10-31 16:56 ./testx -> x1
2345059 lrwxrwxrwx 1 user2 user2 2 2010-01-03 16:17 ./x3 -> x1

Vous pouvez utiliser à la -lsplace de -execmais cela affichera l'inode et d'autres informations du fichier cible à la place des fichiers individuels.


Cette sortie montre des liens durs et sym? Liens Sym indiqués par -> flèche?
— aaaidan

@aaaidan: Oui, c'est bien ça. Les numéros d'inode de x1 et x2 sont les mêmes, ce qui indique qu'il s'agit de liens physiques. La flèche indique un lien symbolique. Utiliser -Let -samefilefait en sorte que les deux soient listés. Si vous omettez, les -Lliens symboliques ne sont pas suivis (voir man find).
— Dennis Williamson

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.