Il find Il comando è lo strumento principale per le operazioni ricorsive del file system. Usa il comando -type d espressione per dire find sei interessato a trovare solo directory (e non file semplici). La versione GNU di find supporta il -empty prova, quindi
$ find . -type d -empty -print
stamperà tutte le directory vuote sotto la tua directory corrente.
Usa find ~ -… o find "$HOME" -… per basare la ricerca sulla tua home directory (se non è la tua directory corrente).
Dopo aver verificato che si stanno selezionando le directory corrette, usa -delete per eliminare tutte le corrispondenze:
$ find . -type d -empty -delete
Puoi chiamare rmdir in ogni directory, dal rmdir eliminerà una directory solo se è vuota:
find "$HOME" -type d -exec rmdir {} + 2>/dev/null
Se vuoi stampare anche le directory che vengono rimosse, dovrai controllare se sono vuote:
find "$HOME" -type d -exec bash -c 'shopt -s nullglob; shopt -s dotglob; files=("$1"/*); [[ ${files[@]} ]] || rmdir -v "$1"' -- {} \;
Ecco un puro esempio di bash (versione 4 o superiore):
shopt -s globstar
for dir in **/; do
files=("$dir"/*)
[[ ${files[@]} ]] || rmdir -v "$dir"
done