Список всех файлов с одинаковым номером инода?

53

Допустим, когда я делаю ls -liэто в каталоге, я получаю это:

12353538 -rw-r--r-- 6 me me 1650 2013-01-10 16:33 fun.txt

Как показывает вывод, файл fun.txt имеет 6 жестких ссылок; и номер индекса 12353538 .

Учитывая ситуацию, как мне найти все жесткие ссылки для файла, т.е. файлы с одинаковым номером инода?

это я
источник

Ответы:

56
find /mount/point -samefile /mount/point/your/file
Хауке Лагинг
источник
3
@TheoneManis Я только что заметил, что другие части вызова find не нужны. findдостаточно умен, чтобы использовать их неявно. Обычно вы должны findуказать путь поиска и указать, что он не должен покидать эти файловые системы (через символические ссылки или точки монтирования). Но при поиске жестких ссылок становится ясно, в какой файловой системе искать.
Хауке Лагинг
6
Хауке, это зависит от используемой версии find. Версия GNU могла бы сделать это, но версия BSD - нет, и это не будет работать как есть на Mac.
Алан Шутко
3
Возможно, вы захотите добавить, -xdevчтобы избежать перехода в каталоги в других файловых системах, в противном случае вы можете найти другой файл с таким же номером инода, расположенный в другой файловой системе.
Mmoya
Примером, близким к -samefileHP-UX, является -linkedto(хотя он немного отличается: например, необходимо указать путь поиска).
Ник
3
Обратите внимание, что если вы не находитесь в корневом каталоге вашей точки монтирования, команда find изучит только подпапки текущей папки. Так что вы действительно должны сказать что-то вродеfind /mount/point -samefile /mount/point/your/file
Calimo
52

Если у вас уже есть номер индекса, вы можете использовать -inumопцию поиска :

find -inum 12353538
SCAI
источник
11
Не забудьте зайти в корень файловой системы или указать его как путь для поиска, например find /mount/point -inum 12353538. В противном случае find будет выглядеть только в текущей папке.
Calimo