[ -z "$(find "$DIR" -maxdepth 0 -empty)" ] || echo "$DIR is empty!"
find
имеет предикат -empty
, который проверяет, является ли каталог или файл пустым, поэтому он будет перечислять каталог, только если он пуст. -z
проверяет, является ли вывод find пустым. Если это так, то каталог содержит записи, если нет, то он пуст.
Другими кодовыми словами:
[ -n "$(find "$DIR" -maxdepth 0 -empty)" ] && echo "$DIR is empty!"
Еще один довольно приятный:
if ! ls -AU "$DIR" | read _; then
echo "$DIR is empty!"
fi