Bei jedem anderen Verzeichnis als dem aktuellen können Sie überprüfen, ob es leer ist, indem Sie es versuchen rmdir
, da dies rmdir
bei nicht leeren Verzeichnissen garantiert fehlschlägt. Wenn dies rmdir
gelingt und Sie tatsächlich wollten, dass das leere Verzeichnis den Test überlebt, mkdir
wiederholen Sie es einfach .
Verwenden Sie diesen Hack nicht, wenn es andere Prozesse gibt, die durch ein Verzeichnis, von dem sie wissen, dass es kurzzeitig aufhört zu existieren, möglicherweise unübersichtlich werden.
Wenn dies bei rmdir
Ihnen nicht funktioniert und Sie möglicherweise Verzeichnisse testen, die möglicherweise eine große Anzahl von Dateien enthalten, kann jede Lösung, die auf Shell-Globbing beruht, langsam werden und / oder zu Längenbeschränkungen für die Befehlszeile führen. Wahrscheinlich besser find
in diesem Fall zu verwenden. Die schnellste find
Lösung, die mir einfällt, geht so
is_empty() {
test -z $(find "$1" -mindepth 1 -printf X -quit)
}
Dies funktioniert für die GNU- und BSD-Versionen, find
jedoch nicht für die Solaris- Versionen , bei denen jeder einzelne dieser find
Operatoren fehlt . Liebe deine Arbeit, Oracle.