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