if find "${DIR}" -prune ! -empty -exit 1; then
echo Empty
else
echo Not Empty
fi
EDIT: Tôi nghĩ rằng giải pháp này hoạt động tốt với gnu find, sau khi xem nhanh việc thực hiện . Nhưng điều này có thể không hoạt động với, ví dụ, tìm kiếm của netbsd . Thật vậy, cái đó sử dụng trường st_size của stat (2). Hướng dẫn mô tả nó như sau:
st_size The size of the file in bytes. The meaning of the size
reported for a directory is file system dependent.
Some file systems (e.g. FFS) return the total size used
for the directory metadata, possibly including free
slots; others (notably ZFS) return the number of
entries in the directory. Some may also return other
things or always report zero.
Một giải pháp tốt hơn, cũng đơn giản hơn, là:
if find "${DIR}" -mindepth 1 -exit 1; then
echo Empty
else
echo Not Empty
fi
Ngoài ra, -prune trong giải pháp 1 là vô ích.
EDIT: không -exit cho gnu find .. giải pháp trên là tốt cho tìm kiếm của NetBSD. Đối với GNU find, điều này sẽ hoạt động:
if [ -z "`find \"${DIR}\" -mindepth 1 -exec echo notempty \; -quit`" ]; then
echo Empty
else
echo Not Empty
fi