Как я могу найти топ-10 файлов в Unix с большинством ссылок на него?
3 ответа
find -type f -ls | sort -rn -k 4 | head -10
Вывод будет отсортирован в порядке убывания количества ссылок. (-r = обратный, -n = числовая сортировка, -k 4 = сортировка по столбцу 4)
Если вам нужны символические ссылки, то вам придется посмотреть на другие ответы. Я ответил на единственную интерпретацию, которая имеет простой ответ. :П
Это похоже на работу:
$ find . -type l -exec readlink {} \; | sort | uniq -c | sort -r | head
Если вы хотите, чтобы отображаемое число файлов отличалось от 10, просто добавьте число, которое вы хотите, в качестве аргумента к head
.
Это будет искать символические ссылки под текущим каталогом, чтобы искать в другом каталоге, заменить .
с пути, который вы хотите.
Я не верю, что в файле есть что-то, что говорит вам, сколько на него ссылок.
Если я прав, вам придется искать в дереве каталогов ссылки и сортировать их по файлам, на которые они ссылаются.
Команда find
может перечислять ссылки с -type l
но если вы не используете специальную обработку ссылок find, вы не увидите, к чему относится ссылка.
Так что постарайтесь:
sudo find -L / -type l -exec ls {} \;
перечислить ссылки. Затем перенаправьте вывод на sort
, uniq
и так далее.
Я не проверял это (это не является полным, так или иначе): я не уверен, есть ли у меня дублированные ссылки, чтобы найти в моей файловой системе, которые сделали бы тест значимым.