if find "${DIR}" -prune ! -empty -exit 1; then
echo Empty
else
echo Not Empty
fi
EDIT: Penso che questa soluzione funzioni bene con gnu find, dopo una rapida occhiata alla implementazione . Ma questo potrebbe non funzionare, per esempio, con netbsd’s find . Infatti, quello usa il campo st\size di stat(2). Il manuale lo descrive come:
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 soluzione migliore, anche più semplice, è:
if find "${DIR}" -mindepth 1 -exit 1; then
echo Empty
else
echo Not Empty
fi
Inoltre, il -prune nella prima soluzione è inutile.
EDIT: niente -exit per gnu find… la soluzione di cui sopra va bene per il find di NetBSD. Per GNU find, questo dovrebbe funzionare:
if [-z "`find \"${DIR}\" -mindepth 1 -exec echo notempty \; -quit`"]; then
echo Empty
else
echo Not Empty
fi