Как найти все файлы, которые являются в основном мягкими или жесткими ссылками других каталогов или файлов на Linux?
Как я могу получить список всех связанных файлов в моей системе или из определенного каталога. Я использовал для создания ссылок, но со временем они стали неуправляемыми. Мне нужен список всех таких ссылок из каталога. Может ли кто-нибудь помочь?
Ответы
Ответ 1
Поиск символических ссылок очень просто:
% find . -type l
Найти жесткие ссылки сложно, потому что если в подкаталоге рассматриваемого каталога также есть подкаталоги, то они увеличивают количество ссылок на жесткие ссылки. Это то, как подкаталоги связаны с родителями в UNIX (это запись ..
в каждом подкаталоге).
Если вы хотите найти только связанные файлы (а не каталоги), это будет работать:
% find . -type f \! -links 1
Это работает, потому что файл, который имеет жесткие ссылки, будет иметь число ссылок > 1, а несвязанный файл имеет счетчик ссылок == 1, поэтому эта команда ищет все файлы, чья ссылка count < > 1
В качестве альтернативы, в новых версиях find
вы можете использовать:
% find . -type f -links +1
Это работает по той же причине, что и выше; однако более новые версии find могут принимать + n или -n вместо числа. Это эквивалентно тестированию более чем на n или меньше n, соответственно.
Ответ 2
find / -xdev -samefile filename
Ответ 3
@OP, Если у вас есть GNU find, вы можете найти жесткие ссылки, используя -printf "%n"
,
например.
find /path -type f -printf "%f/%n/%i\n" | while IFS="/" read filename num_hlinks inum
do
echo "Filename: $filename. Number of hard links: $num_hlinks, inode: $inum"
# if 2 or more files have the same inode number, then they are hard links.
# you can therefore count how many $inum that are the same and determine those hard links, which
# you have to try doing yourself.
done
Ответ 4
См. Вот
https://www.gnu.org/software/findutils/manual/html_node/find_html/Hard-Links.html
или объединить ответы Alnitak и amber_linux в
find -L /where/to/search -samefile /some/link/to/file
найти все жесткие и непрямые ссылки на данный файл.