Dan McG hat die richtige Idee. Das funktioniert:
find . -type d -links 2 -exec sh -c '[ -z "$(ls -UA "$1/" )" ]' dummy {} \; -print
-links 2 spart Zeit, indem Verzeichnisse mit Unterverzeichnissen ausgeschlossen werden, denn wenn AIX mit den meisten Unix-Systemen identisch ist, können nur Verzeichnisse eigene Verzeichnisse haben. Eintrag und die .. Einträge in seinen Nebenverben.
ls -UA kümmert sich nicht um das Sortieren (-U) und muss die Dateien nicht statisieren, sondern nur ausgeben, was sie von readdir erhält, also ist es nicht so schlimm. -Auslasse. und .. Wenn also die Ausgabe die leere Zeichenfolge ist, war das Verzeichnis leer.
Wenn Sie trotzdem sh -c aufrufen, können Sie das, was Sie benötigen, direkt im sh tun, anstatt die Ausgabe von find -print0 zu verwenden. Bei einem zu schlechten Nicht-GNU-Fund ist -exec {} + nicht vorhanden (dh Xargs sind eingebaut).
Wenn Sie die Ausgabe von find verarbeiten, können Sie dies möglicherweise effizienter durchführen. Wenn Sie z. B. zwei Verzeichnisse ohne Datei anzeigen, haben Sie ein leeres Verzeichnis. Es ist jedoch nicht so langsam, sh -c und ls für jedes Verzeichnis auszuführen.