if find "${DIR}" -prune ! -empty -exit 1; then
echo Empty
else
echo Not Empty
fi
EDIT: Creo que esta solución funciona bien con gnu find, después de un rápido vistazo a la implementación . Pero puede que no funcione con, por ejemplo, el find de netbsd . En efecto, ese utiliza el campo st_tamaño de stat(2). El manual lo describe como
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.
Una solución mejor, también más sencilla, es:
if find "${DIR}" -mindepth 1 -exit 1; then
echo Empty
else
echo Not Empty
fi
Además, el -prune de la 1ª solución es inútil.
EDIT: no hay -exit para gnu find.. la solución anterior es buena para el find de NetBSD. Para GNU find, esto debería funcionar:
if [-z "`find \"${DIR}\" -mindepth 1 -exec echo notempty \; -quit`"]; then
echo Empty
else
echo Not Empty
fi