if find "${DIR}" -prune ! -empty -exit 1; then
echo Empty
else
echo Not Empty
fi
EDIT: Bu çözümün uygulamaya hızlı bir bakıştan sonra gnu find ile iyi çalıştığını düşünüyorum . Ancak bu, örneğin netbsd'nin bulduğu ile çalışmayabilir . Aslında, bu bir stat (2) 'nin st_size alanını kullanır. El kitabında şöyle açıklanmaktadır:
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.
Daha iyi bir çözüm, aynı zamanda daha basit:
if find "${DIR}" -mindepth 1 -exit 1; then
echo Empty
else
echo Not Empty
fi
Ayrıca, ilk çözümdeki -prune işe yaramaz.
EDIT: hayır-gnu bulmak için-çıkış yok .. yukarıdaki çözüm NetBSD bulmak için iyidir. GNU bulmak için bu çalışması gerekir:
if [ -z "`find \"${DIR}\" -mindepth 1 -exec echo notempty \; -quit`" ]; then
echo Empty
else
echo Not Empty
fi