Как в Linux получить список жестких ссылок на файл?
Начните с проверки того, что количество жестких ссылок от ls
больше 0.
Если да, то вы можете поискать их несколько кропотливо:
find <path> -type f -samefile <source>
Это находит все файлы по заданному пути и сравнивает номер inode вашего исходного файла с номером найденного файла (ов). Жесткие ссылки используют один и тот же индексный дескриптор. Так что, если они совпадают, у вас есть жесткая ссылка.
find /partition_root -samefile /partition_root/file/to/find/hardlinks/of
Может быть более простой / быстрый способ, но
stat file
что дает нечто похожее на
File: `file'
Size: 14 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 4227594 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 501/ phone) Gid: ( 501/ phone)
Access: 2009-09-22 15:33:15.000000000 +0100
Modify: 2009-05-11 17:01:15.000000000 +0100
Change: 2009-05-11 17:05:09.000000000 +0100
затем используя номер inode из строки Inode,
find /path -inum 4227594
Только для жестких ссылок:
find -samefile xaa -ls
также включить символические ссылки:
find -L -samefile xaa -exec ls -li {} \;
С помощью -exec ls
здесь вместо -ls
показывает владельца, группу, разрешения и цель самих символических ссылок вместо информации о цели.