Eu posso pensar em duas maneiras que estão no topo da minha cabeça:
-
Use
find
e limite o número de linksfind -type f -links 1
O comando acima encontrará todos os arquivos cujo inode é apenas apontado por um único link. Isso significa que qualquer arquivo que aponte para o mesmo inode como outro não será impresso.
-
Liste todos os inodes e mostre apenas os únicos
ls -1i | awk '{print $1}' | sort | uniq -u
Observe que o acima não imprimirá nomes de arquivos, apenas inodes. Isso ocorre porque i) são os inodes que precisamos classificar / uniq e ii) os nomes dos arquivos podem conter caracteres estranhos, como novas linhas, que quebrariam a ordenação / uniqing. Se tiver certeza de que seus nomes de arquivo são saudáveis, você pode usar essa abordagem para imprimir nomes de arquivos:
ls -1i | awk '{c[$1]++;l[$1]=$0;} END{for(i in c){if(c[i]==1){print l[i]}}}'