Utilisation de GNU find
, cela trouvera les fichiers liés en dur ou en lien symbolique vers un fichier :
find -L /dir/to/start -samefile /tmp/orig.file
Je n'ai pas vu de commande pour cela et ce n'est pas une tâche facile, car le fichier cible ne contient aucune information sur les fichiers source qui y pointent.
Ceci est similaire aux liens "hard" mais au moins ceux-ci sont toujours sur le même système de fichiers afin que vous puissiez faire un find -inode
pour les lister. Les liens symboliques sont plus problématiques car ils peuvent traverser des systèmes de fichiers.
Je pense que ce que vous allez devoir faire est essentiellement d'effectuer un ls -al
sur chaque fichier de toute votre hiérarchie et utilisez grep
pour rechercher -> /path/to/target/file
.
Par exemple, en voici un que j'ai exécuté sur mon système (formaté pour la lisibilité - ces deux dernières lignes sont en fait sur une ligne dans la sortie réelle) :
pax$ find / -exec ls -ald {} ';' 2>/dev/null | grep '\-> /usr/share/applications'
lrwxrwxrwx 1 pax pax 23 2010-06-12 14:56 /home/pax/applications_usr_share
-> /usr/share/applications
Inspiré par le commentaire de Gordon Davisson. Ceci est similaire à une autre réponse, mais j'ai obtenu les résultats souhaités en utilisant exec. J'avais besoin de quelque chose qui puisse trouver des liens symboliques sans savoir où se trouvait le fichier d'origine.
find / -type l -exec ls -al {} \; | grep -i "all_or_part_of_original_name"