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