Você pode executar o seguinte comando:
find / -type f -printf '%n %p\n' | awk '$1 > 1{$1="";print}'
para encontrar todos os arquivos com link físico.
Ou versão @mbafford:
find / -type f -links +1 -printf '%i %n %p\n'
Eu preciso encontrar todos os arquivos com link físico em um determinado sistema de arquivos. Por exemplo. obter uma lista de arquivos, cada linha contém pares vinculados ou trios, etc.
Eu entendo mais ou menos como fazer isso, é preciso criar um dicionário codificado por inode para todos os arquivos / diretórios em um sistema de arquivos, excluir "." e ".." links e, em seguida, os indodes com mais de um nome são hardlinks ... Mas espero que talvez exista uma solução pronta ou alguém já tenha escrito esse script.
find . -type f -links +1 2>/dev/null
fornece uma lista de todos os arquivos que possuem mais de um link, ou seja, arquivos para os quais existe um link físico. Fazer um loop sobre isso é relativamente fácil - uma solução hacky, se você não tiver muitos arquivos,
for i in $(find . -type f -links +1 2>/dev/null); do find -samefile $i | awk '{printf "%s ", $1}'; printf "\n"; done | sort | uniq
Mas espero sinceramente que haja soluções melhores, por exemplo, permitindo que o primeiro find
chame números de inode de impressão e, em seguida, usando a opção find
-inum
para mostrar todos os arquivos associados a este inode.
IMHO, a melhor maneira é usar a seguinte linha (com certeza você tem que substituir /PATH/FOR/SEARCH/
com o que você quer pesquisar):
find /PATH/FOR/SEARCH/ -xdev -printf '%i\t%n\t%p\n' | fgrep -f <(find . -xdev -printf '%i\n' | sort -n | uniq -d) | sort -n
isso varre o sistema de arquivos apenas uma vez, mostra inode, número de hardlinks e caminho de arquivos com mais de um hardlink e os classifica de acordo com o inode.
Se você estiver incomodado com mensagens de erro para pastas que não tem permissão para ler, você pode expandir a linha para isso:
find /PATH/FOR/SEARCH/ -xdev -printf '%i\t%n\t%p\n' 2> /dev/null | fgrep -f <(find . -xdev -printf '%i\n' 2> /dev/null | sort -n | uniq -d) | sort -n