Na maioria dos sistemas de arquivos¹, um arquivo é determinado exclusivamente pelo seu número inode , então tudo que você precisa verificar é se dois arquivos têm o mesmo número de inode e estão no mesmo sistema de arquivos.
Ash, ksh, bash e zsh têm uma construção que faz a verificação para você: o operador de igualdade de arquivos -ef
.
[ fileA -ef fileB ] && ! [ fileA -ef fileC ]
Para casos mais avançados, ls -i /path/to/file
lista o número de inode de um arquivo. df -P /path/to/file
mostra em qual sistema de arquivos o arquivo está (se dois arquivos estão no mesmo diretório, eles estão no mesmo sistema de arquivos). Se o seu sistema tiver o comando stat
, ele provavelmente mostrará os números do inode e do sistema de arquivos ( stat
varia de sistema para sistema, verifique sua documentação). Se você quiser uma rápida olhada nos links físicos de um diretório, tente ls -i | sort
(possivelmente canalizados para o awk ).
Todos os sistemas de arquivos unix nativos e alguns outros, como o NTFS, mas possivelmente não casos exóticos como o CramFS.