if find "${DIR}" -prune ! -empty -exit 1; then
echo Empty
else
echo Not Empty
fi
แก้ไข: ฉันคิดว่าการแก้ปัญหานี้ทำงานได้ดีกับ GNU หาหลังจากได้อย่างรวดเร็วดูที่การดำเนินงาน แต่ตอนนี้อาจไม่ทำงานกับตัวอย่างเช่นNetBSD หา อันที่จริงนั้นใช้ฟิลด์ st_size ของ stat (2) คู่มืออธิบายเป็น:
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
นอกจากนี้ -prune ในโซลูชันที่ 1 ก็ไม่มีประโยชน์เช่นกัน
แก้ไข: ไม่ออกสำหรับ gnu find .. ทางออกข้างต้นนั้นดีสำหรับการค้นหาของ NetBSD สำหรับ GNU พบสิ่งนี้ควรใช้:
if [ -z "`find \"${DIR}\" -mindepth 1 -exec echo notempty \; -quit`" ]; then
echo Empty
else
echo Not Empty
fi