É possível que eu tenha entendido errado você, mas parece que você está trabalhando com um shell POSIX .
Você pode fazer isso com awk
( gawk
). Na medida em que cada diretório vazio contém apenas 2 arquivos por padrão ( .
e ..
), você pode usar [ $(wc -l <<< $(ls -as $DIR)) -ne 2 ]
como condição de vazio da pasta.
$ find . -type d | awk '{print "[ $(wc -l <<< $(ls -a \"" $i "\")) -eq 2 ] && rm -rf \"" $0 "\""}'
Esta é a saída que saí do diretório testado:
[ $(wc -l <<< $(ls -a ".")) -eq 2 ] && rm -rf "."
[ $(wc -l <<< $(ls -a "./skda askd ()")) -eq 2 ] && rm -rf "./skda askd ()"
[ $(wc -l <<< $(ls -a "./skda askd () 2")) -eq 2 ] && rm -rf "./skda askd () 2"
Agora tudo que você precisa fazer é canalizar esses comandos para o seu intérprete. No meu diretório de testes, isso funcionou de forma limpa.