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