Como excluo todos os diretórios vazios

11

(em um sistema Linux)

Eu tenho um grande conjunto de subdiretórios aninhados em um sistema de arquivos. Eu gostaria de podar todos os caminhos de diretório que não contêm arquivos.

Em outras palavras, eu gostaria de excluir todos os diretórios onde não há arquivos nesse diretório ou em qualquer subdiretório desse diretório recursivamente.

    
por AndrewR 18.05.2011 / 02:48

3 respostas

15

Para todas as versões do find

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

Se você tiver uma versão mais recente

 find -type d -empty -delete
    
por 18.05.2011 / 04:18
1

Pode não ser a melhor solução, mas esse script funciona:

#!/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

(baseado parcialmente na resposta a Listar todas as pastas vazias )

    
por 18.05.2011 / 02:50
0
for i in 'find -type d -empty'; do rmdir $i; done
    
por 18.05.2011 / 04:20

Tags