อีกสามตัวเลือก
ใช้find
กับ-mindepth 1
และ-delete
:
indmindepth ระดับ
อย่าใช้การทดสอบหรือการกระทำที่ระดับน้อยกว่าระดับ (จำนวนเต็มลบ))
indmindepth 1 หมายถึงประมวลผลไฟล์ทั้งหมดยกเว้นอาร์กิวเมนต์บรรทัดคำสั่ง
-delete
ลบไฟล์; จริงถ้าการลบสำเร็จ หากการลบล้มเหลวจะมีข้อความแสดงข้อผิดพลาดออกมา หาก eldelete ล้มเหลวสถานะทางออกของ find จะไม่ใช่ศูนย์ (เมื่อในที่สุดจะออก) การใช้ eldelete จะเปิดใช้งานตัวเลือก epdepth โดยอัตโนมัติ
ทดสอบอย่างระมัดระวังด้วยตัวเลือก -depth ก่อนใช้ตัวเลือกนี้
# optimal?
# -xdev don't follow links to other filesystems
find '/target/dir with spaces/' -xdev -mindepth 1 -delete
# Sergey's version
# -xdev don't follow links to other filesystems
# -depth process depth-first not breadth-first
find '/target/dir with spaces/' -xdev -depth -mindepth1 -exec rm -rf {} \;
2. ใช้find
แต่มีไฟล์ไม่ใช่ไดเรคทอรี่ นี่เป็นการหลีกเลี่ยงความจำเป็นในการrm -rf
:
# delete all the files;
find '/target/dir with spaces/' -type f -exec rm {} \;
# then get all the dirs but parent
find '/target/dir with spaces/' -mindepth 1 -depth -type d -exec rmdir {} \;
# near-equivalent, slightly easier for new users to remember
find '/target/dir with spaces/' -type f -print0 | xargs -0 rm
find '/target/dir with spaces/' -mindepth 1 -depth -type d -print0 | xargs -0 rmdir
3. ไปข้างหน้าและลบไดเรกทอรีหลัก แต่สร้างใหม่ คุณสามารถสร้างฟังก์ชั่นทุบตีเพื่อทำสิ่งนี้ด้วยคำสั่งเดียว; นี่เป็นหนึ่งซับง่าย:
rm -rf '/target/dir with spaces' ; mkdir '/target/dir with spaces'