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.