У Дана МакГа правильная идея. Это работает:
find . -type d -links 2 -exec sh -c '[ -z "$(ls -UA "$1/" )" ]' dummy {} \; -print
-links 2 экономит время, исключая каталоги с подкаталогами, потому что если AIX похож на большинство систем Unix, единственные ссылки, которые может иметь каталог, это его собственные. запись, и .. записи в ее подкаталогах.
ls -UA не заботится о сортировке (-U) и не нуждается в статистике файлов, просто выводит то, что получает из readdir, так что это не так уж плохо. -А пропускает. и .., поэтому, если вывод - пустая строка, каталог был пуст.
Если вы все равно вызываете sh -c, вы можете делать то, что вам нужно для per-empty-directory, прямо в sh, вместо того, чтобы использовать вывод find -print0. Жаль, что не-GNU find не имеет -exec {} + (т. Е. Встроенный xargs).
Возможно, если вы обработаете вывод find, вы сможете сделать это более эффективно. например, если вы видите две директории подряд без файла, то у вас есть пустой каталог? все же не так уж и медленно запускать sh -c и ls для каждого каталога.