(บนระบบ Linux)
ฉันมีชุดย่อยที่ซ้อนกันขนาดใหญ่บนระบบไฟล์ ฉันต้องการตัดเส้นทางไดเรกทอรีทั้งหมดที่ไม่มีไฟล์เลย
ในคำอื่น ๆ ฉันต้องการลบทุกไดเรกทอรีที่ไม่มีไฟล์ในไดเรกทอรีนั้นหรือในไดเรกทอรีย่อยใด ๆ ของไดเรกทอรีนั้นซ้ำ
(บนระบบ Linux)
ฉันมีชุดย่อยที่ซ้อนกันขนาดใหญ่บนระบบไฟล์ ฉันต้องการตัดเส้นทางไดเรกทอรีทั้งหมดที่ไม่มีไฟล์เลย
ในคำอื่น ๆ ฉันต้องการลบทุกไดเรกทอรีที่ไม่มีไฟล์ในไดเรกทอรีนั้นหรือในไดเรกทอรีย่อยใด ๆ ของไดเรกทอรีนั้นซ้ำ
คำตอบ:
สำหรับการค้นหาทุกรุ่น
find -depth -type d -empty -exec rmdir {} \;
หากคุณมีรุ่นที่ใหม่กว่า
find -type d -empty -delete
อาจไม่ใช่วิธีที่ดีที่สุด แต่สคริปต์นี้ใช้งานได้:
#!/bin/sh
while true
do
DIRS=`find . -xdev -type d -exec find {} -maxdepth 0 -empty \;`
if [ -z "$DIRS" ]; then
exit 0
else
echo $DIRS | xargs rmdir
fi
done
(ส่วนหนึ่งขึ้นอยู่กับคำตอบในรายการโฟลเดอร์ว่างทั้งหมด )
for i in `find -type d -empty`; do rmdir $i; done
find
พวกเขาในการวิ่งครั้งที่สอง ไม่เคยมีกรณีนี้ในชีวิตจริง
-delete
ธง