El find
El comando es la herramienta principal para las operaciones recursivas del sistema de archivos. Use el -type d
expresión para decirle a find
está interesado en encontrar directorios solamente (y no archivos sin formato). La versión GNU de find
soporta el -empty
prueba, entonces
$ find . -type d -empty -print
imprimirá todos los directorios vacíos debajo de su directorio actual.
Usa find ~ -…
o find "$HOME" -…
para basar la búsqueda en su directorio de inicio (si no es su directorio actual).
Una vez que haya verificado que esto está seleccionando los directorios correctos, use -delete
para eliminar todas las coincidencias:
$ find . -type d -empty -delete
Puedes llamar al rmdir
en cada directorio, desde rmdir
solo eliminará un directorio si está vacío:
find "$HOME" -type d -exec rmdir {} + 2>/dev/null
Si también desea imprimir los directorios que se eliminan, deberá verificar si están vacíos:
find "$HOME" -type d -exec bash -c 'shopt -s nullglob; shopt -s dotglob; files=("$1"/*); [[ ${files[@]} ]] || rmdir -v "$1"' -- {} \;
Aquí hay un ejemplo puro de bash (versión 4 o superior):
shopt -s globstar
for dir in **/; do
files=("$dir"/*)
[[ ${files[@]} ]] || rmdir -v "$dir"
done