Мне нужно найти все жестко связанные файлы в данной файловой системе. Например, получить список файлов, каждая строка содержит связанные пары или триплеты и т. Д.
Я более или менее понимаю, как это сделать, нужно создать словарь с ключом inode для всех файлов / каталогов в файловой системе, исключив "." и ссылки "..", а затем индоды с более чем одним именем являются жесткими ссылками ... Но я надеюсь, что, возможно, существует готовое решение или кто-то уже написал такой сценарий.
find / -type f -links +1 -printf '%i %n %p\n'
sort
(+uniq
)? Мне было любопытно, поэтому я попробовал его на своем главном компьютере (16GB i5-2500k с ssd). с 2187757 файлами (find / -xdev -type f | wc
) занимает 12 реальных секунд при возврате 3820 файлов / 570 inode (time sudo find / -xdev -type f -links +1 -printf "%i\n" | sort | uniq | wc
). вам нужно будет включить%n %p
для фактических файлов, как я вынул их для подсчета inode.дает список всех файлов, которые имеют более одной ссылки, то есть файлов, на которые существует жесткая ссылка. Цикл по этому вопросу тогда относительно прост - хакерское решение, если у вас не так много файлов, будет
Но я искренне надеюсь , что есть более эффективные решения, например, позволяя первые
find
номера печати инодов вызовов , а затем с помощьюfind
«s-inum
возможности показать все файлы , связанные с этим инодом.источник
find . -type f -printf '%i %p\n'
, позволил бы создать гораздо более быстрое решение.for
цикла, настройка IFS соответственно будет работать. Чтобы проанализировать вывод команды find в моем комментарии, также должно работать объявление всего между первым пробелом и концом строки как имени файла.lost+found
т. Д.); что особенно важно, если вывод должен обрабатываться дальше, как во второй строке.ИМХО, лучше всего использовать следующую строку (наверняка вам придется заменить
/PATH/FOR/SEARCH/
на то, что вы хотите найти):это сканирует файловую систему только один раз, показывает индекс, количество жестких ссылок и путь к файлам с более чем одной жесткой ссылкой и сортирует их в соответствии с индексом.
если вас раздражают сообщения об ошибках для папок, которые вам запрещено читать, вы можете расширить строку до следующего:
источник