Для любого каталога, кроме текущего, вы можете проверить, является ли он пустым, попытавшись выполнить rmdir
, потому что rmdir
гарантированно завершится с ошибкой для непустых каталогов. Если rmdir
успешно, и вы действительно хотели, чтобы пустой каталог выдержал тест, просто mkdir
еще раз.
Не используйте этот хак, если есть другие процессы, которые могут стать некомпетентными из-за каталога, который, как они знают, ненадолго прекратит свое существование.
Если rmdir
не будет работать для вас, и вы можете тестировать каталоги, которые могут содержать большое количество файлов, любое решение, основанное на глобализации оболочки, может работать медленно и / или работать с ограничениями длины командной строки. Вероятно, лучше использовать find
в этом случае. Самое быстрое решение для find
я могу придумать, идет как
is_empty() {
test -z $(find "$1" -mindepth 1 -printf X -quit)
}
Это работает для GNU и BSD версий find
но не для Solaris, в которой отсутствуют все эти операторы find
. Люблю свою работу, Оракул.