Até onde eu sei, não há maneira fácil de listar todos os links simbólicos apontando para um inode. Portanto, eu recomendaria usar o utilitário padrão find com os switches -L e -samefile :
-
-samefile irá comparar com base no inode do seu arquivo de destino,
-
-L incluirá links simbólicos na pesquisa, que é o que você está procurando.
Aqui está um exemplo com / bin / dash em / bin:
$ find -L /bin -samefile /bin/dash -exec ls -lhi {} \;
786515 lrwxrwxrwx 1 root root 4 Mar 29 2012 /bin/sh -> dash
786436 -rwxr-xr-x 1 root root 108K Mar 29 2012 /bin/dash
A partir desta saída, você pode ver ambos com o número do inode (primeira coluna) e a seta (último) que / bin / sh em um link simbólico para o / bin / traço. Se fossem hardlinks, o número de inode seria o mesmo para arquivos diferentes e não haveria nenhuma seta na última coluna.
Finalmente, se eu precisasse procurar esses links em um sistema de arquivos inteiro, eu excluiria alguns diretórios como / dev , / proc e / sys da pesquisa. Isso seria feito com o -path e -prune swicthes (você pode adicionar quantos quiser com -o significado do switch ou ), 2 > / dev / null está aqui para mascarar erros em potencial:
$ sudo find -L / \( -path /dev -o -path /proc -o -path /sys \) -prune -samefile /bin/dash -exec ls -lhi {} \; 2>/dev/null
Como a pesquisa em um sistema de arquivos inteiro pode levar muito tempo (principalmente dependendo do tamanho), considerarei essa opção como último recurso. É como procurar uma agulha num palheiro: não é impossível, mas exige muito esforço ...