if find "${DIR}" -prune ! -empty -exit 1; then
echo Empty
else
echo Not Empty
fi
EDIT: Ik denk dat deze oplossing prima werkt met gnu find, na een snelle blik op de implementatie . Maar dit werkt misschien niet met, bijvoorbeeld, netbsd’s find . Inderdaad, die gebruikt stat(2)‘s st_size veld. De handleiding beschrijft het als:
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.
Een betere oplossing, ook eenvoudiger, is:
if find "${DIR}" -mindepth 1 -exit 1; then
echo Empty
else
echo Not Empty
fi
Ook de -prune in de 1e oplossing is nutteloos.
EDIT: geen -exit voor gnu find… de bovenstaande oplossing is goed voor NetBSD’s find. Voor GNU find, zou dit moeten werken:
if [-z "`find \"${DIR}\" -mindepth 1 -exec echo notempty \; -quit`"]; then
echo Empty
else
echo Not Empty
fi