Für jedes beliebige Verzeichnis außer dem aktuellen können Sie prüfen, ob es leer ist, indem Sie versuchen, es mit rmdir zu belegen, denn rmdir schlägt bei nicht leeren Verzeichnissen garantiert fehl. Wenn rmdir erfolgreich ist und Sie eigentlich wollten, dass das leere Verzeichnis den Test überlebt, führen Sie einfach erneut mkdir aus.
Verwenden Sie diesen Hack nicht, wenn es andere Prozesse gibt, die durch ein Verzeichnis, von dem sie wissen, dass es kurzzeitig nicht mehr existiert, verwirrt werden könnten.
Wenn rmdir für Sie nicht funktioniert und Sie Verzeichnisse testen, die möglicherweise eine große Anzahl von Dateien enthalten, könnte jede Lösung, die auf Shell-Globbing beruht, langsam werden und/oder an die Grenzen der Befehlszeilenlänge stoßen. Wahrscheinlich ist es in diesem Fall besser, find zu verwenden. Die schnellste find-Lösung, die mir einfällt, geht so:
is_empty() {
test -z $(find "$1" -mindepth 1 -printf X -quit)
}
Das funktioniert für die GNU- und BSD-Versionen von find, aber nicht für die Solaris-Version, der jeder einzelne dieser find-Operatoren fehlt. Ich liebe deine Arbeit, Oracle.