มีสาเหตุที่เป็นไปได้สองสามประการสำหรับเรื่องนี้
1)
คุณบอกให้ลบไดเรกทอรีเท่านั้น ( -type d
) และไดเรกทอรีเหล่านั้นยังคงมีไฟล์อยู่ข้างใน
2)
ไดเรกทอรีของคุณมีเพียงไดเรกทอรีอื่น ๆ ดังนั้น-type d
จะดูแลปัญหาเนื้อหา อย่างไรก็ตามคุณใช้ OS-X ซึ่งส่วนใหญ่ใช้ FreeBSD และ FreeBSD เป็นfind
ค่าเริ่มต้นจะประมวลผลไดเรกทอรีก่อนเนื้อหา
อย่างไรก็ตามมี-depth
ตัวเลือกในการแก้ปัญหานี้โดยบอกfind
ให้ประมวลผลไดเรกทอรีหลังจากเนื้อหา
find ~ -name __pycache__ -type d -ls -delete -depth
ปัญหานี้ไม่ได้อยู่ในลินุกซ์เพราะตัวเลือกที่ช่วยให้โดยปริยาย-delete
-depth
FreeBSD man 1 find
:
-depth Always true; same as the non-portable -d option. Cause find to
perform a depth-first traversal, i.e., directories are visited in
post-order and all entries in a directory will be acted on before
the directory itself. By default, find visits directories in
pre-order, i.e., before their contents. Note, the default is not
a breadth-first traversal.
GNU man 1 find
:
-depth Process each directory's contents before the directory itself. The -delete
action also implies -depth.
find ~ -path '*/__pycache__*' -delete
หรืออาจfind ~ -path '*/__pycache__/*' -o -name __pycache__ -delete
จะปลอดภัย