Назад | Перейти на главную страницу

Как удалить все пустые каталоги

(в системе Linux)

У меня есть большой набор вложенных подкаталогов в файловой системе. Я хотел бы удалить все пути к каталогам, которые вообще не содержат файлов.

Другими словами, я хотел бы рекурсивно удалить все каталоги, в которых нет файлов, или в любом подкаталоге этого каталога.

Для всех версий find

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

Если у вас более новая версия

 find -type d -empty -delete

Возможно, это не лучшее решение, но этот сценарий работает:

#!/bin/sh

while true
do
    DIRS=`find . -xdev -type d -exec find {}  -maxdepth 0 -empty  \;`
    if [ -z "$DIRS" ]; then
        exit 0
    else
        echo $DIRS | xargs rmdir
    fi
done

(частично на основании ответа на Список всех пустых папок)

for i in `find -type d -empty`; do rmdir $i; done