3

Я хочу иметь возможность запустить скрипт, который удалит все мои пустые каталоги. Проблема в том, что некоторые из них являются вложенными, то есть каталогами, в которых есть только пустые каталоги, поэтому сценарий должен быть рекурсивным.

Я знаю это:

find /media/server/data001/Unprotected/Downloads/ -type d -empty -exec rmdir {} \;

но я понятия не имею, как заставить его работать снова и снова, пока все вложенные каталоги не будут обработаны и затем остановлены.

1 ответ1

11

Что вам нужно, так это обход в глубину. При этом вы начнете с самого глубокого каталога, а затем будете двигаться вверх. find имеет опцию для этого, так что вы можете просто запустить:

find /some/path -depth -type d -exec rmdir {} \;

Вы можете дополнительно отключить предупреждения для непустых каталогов. Для этого вы можете добавить 2>/dev/null в конце.

С помощью GNU find (и других, таких как BSD find в OS X), вы можете оптимизировать команду - и запускать ее без предупреждений - используя -empty , как вы делали выше.

find /some/path -depth -type d -empty -exec rmdir {} \;

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