if find "${DIR}" -prune ! -empty -exit 1; then
echo Empty
else
echo Not Empty
fi
संपादित करें: मुझे लगता है कि कार्यान्वयन पर त्वरित नज़र डालने के बाद, यह समाधान ग्नू खोज के साथ ठीक काम करता है । लेकिन यह उदाहरण के लिए, netbsd की खोज के साथ काम नहीं कर सकता है । दरअसल, वह स्टेट (2) के st_size फ़ील्ड का उपयोग करता है। मैनुअल इसका वर्णन करता है:
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.
एक बेहतर समाधान भी सरल है:
if find "${DIR}" -mindepth 1 -exit 1; then
echo Empty
else
echo Not Empty
fi
इसके अलावा, 1 समाधान में -प्रयोग बेकार है।
EDIT: gnu find के लिए no -exit .. ऊपर का समाधान NetBSD की खोज के लिए अच्छा है। GNU खोजने के लिए, यह काम करना चाहिए:
if [ -z "`find \"${DIR}\" -mindepth 1 -exec echo notempty \; -quit`" ]; then
echo Empty
else
echo Not Empty
fi