(в системе 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