if find "${DIR}" -prune ! -empty -exit 1; then
echo Empty
else
echo Not Empty
fi
EDIT: Eu acho que esta solução funciona bem com o gnu find, depois de uma rápida olhada na implementação . Mas isso pode não funcionar com, por exemplo, a descoberta do netbsd . De fato, esse usa o campo st_size do stat (2). O manual descreve 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.
Uma solução melhor, também mais simples, é:
if find "${DIR}" -mindepth 1 -exit 1; then
echo Empty
else
echo Not Empty
fi
Além disso, a poda na 1ª solução é inútil.
EDIT: no -itit for gnu find ... a solução acima é boa para a localização do NetBSD. Para a localização do GNU, isso deve funcionar:
if [ -z "`find \"${DIR}\" -mindepth 1 -exec echo notempty \; -quit`" ]; then
echo Empty
else
echo Not Empty
fi