Bei jedem anderen Verzeichnis als dem aktuellen können Sie überprüfen, ob es leer ist, indem Sie es versuchen rmdir, da dies rmdirbei nicht leeren Verzeichnissen garantiert fehlschlägt. Wenn dies rmdirgelingt und Sie tatsächlich wollten, dass das leere Verzeichnis den Test überlebt, mkdirwiederholen 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 rmdirIhnen 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 findin diesem Fall zu verwenden. Die schnellste findLö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, findjedoch nicht für die Solaris- Versionen , bei denen jeder einzelne dieser findOperatoren fehlt . Liebe deine Arbeit, Oracle.