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