3

У меня есть каталог для отслеживания, содержащий жесткие ссылки на файлы / каталоги во втором каталоге (используется для отслеживания перемещений / переименований). Если я удаляю что-то в исходной папке, дисковое пространство не освобождается, так как его жесткая ссылка все еще существует. Поэтому я хочу периодически очищать этот "отслеживающий" каталог. Поэтому мне нужно найти в нем все файлы с количеством жестких ссылок 1.

Какой самый быстрый способ найти (и удалить) рекурсивно все файлы с количеством жестких ссылок 1?

Я знаю, что могу сделать что-то вроде find . -type f -exec ls -l {} \+ | grep -P "^.{11}1" а затем еще несколько трубопроводов / регулярных выражений, но это уродливо и медленно. Я ищу что-то чище и быстрее.

1 ответ1

4

Мой find имеет опцию -links (я на Ubuntu 14.04.5 LTS). Чтобы найти файлы, которые не имеют других жестких ссылок, используйте:

find -type f -links 1

Команда для удаления этих файлов:

find -type f -links 1 -exec rm -f {} +

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .