Leere Verzeichnisse finden und löschen

Datum: 2004-07-08
Quelle: debian-user-german

Worum ging es?

Wie kann man leere Verzeichnisse finden und diese dann löschen? Ich habe verschiedene Varianten aus meinen damaligen Lösngen modernisiert.

Code
# find + exec
find /path/to/dir -mindepth 1 -maxdepth 1 -type d -empty -exec rmdir {} \;
# find + xargs
find /path/to/dir -mindepth 1 -maxdepth 1 -type d -empty -print | xargs rmdir
# find + print0 + xargs
find /path/to/dir -mindepth 1 -maxdepth 1 -type d -empty -print0 | xargs -0 rmdir
# ls
ls -A /path/to/dir | while read f; do
  test -d "$f" || continue
  test -z "`ls -A \"$f\"`" && rmdir "$f"
done
Beschreibung

Alle Varianten suchen die direkten Unterverzeichnisse in einem Basisverzeichnis. Die Art und Weise, die benutzt werden, um leere Verzeichnisse zu finden, unterscheidet sich: Im find kann man direkt testen, ob das Verzeichnis leer ist (Option -empty), mit ls muss man erstmal prüfen, ob es sich um ein Verzeichnis handelt und dann per weiterem ls nachgucken, ob es weitere Einträge enthält.