macOS & Linux
findการใช้งานของ BSD บน macOS นั้นแตกต่างจาก GNU find ซึ่งสามารถใช้งานได้กับทั้ง BSD และ GNU find เริ่มต้นด้วยการใช้งานแบบวนรอบการใช้-nameและ-oสำหรับหรือ - ใส่ฟังก์ชันนี้ใน.bashrcไฟล์ของคุณ:
pyclean () {
find . -type f -name '*.py[co]' -delete -o -type d -name __pycache__ -delete
}
จากนั้นไปยังไดเรกทอรีที่คุณต้องการทำความสะอาดซ้ำและประเภทcdpyclean
GNU ค้นหาอย่างเดียว
นี่เป็น GNU find, ทางออกเดียว (เช่น Linux) แต่ฉันรู้สึกว่ามันดีกว่ากับ regex เล็กน้อย:
pyclean () {
find . -regex '^.*\(__pycache__\|\.py[co]\)$' -delete
}
แพลตฟอร์มใดก็ได้โดยใช้ Python 3
บน Windows คุณอาจไม่มีfindเลย อย่างไรก็ตามคุณอาจมี Python 3 ซึ่งเริ่มต้นที่ 3.4 มีpathlibโมดูลที่สะดวก:
python3 -Bc "import pathlib; [p.unlink() for p in pathlib.Path('.').rglob('*.py[co]')]"
python3 -Bc "import pathlib; [p.rmdir() for p in pathlib.Path('.').rglob('__pycache__')]"
การ-Bตั้งค่าสถานะบอก Python ไม่ให้เขียน.pycไฟล์ (ดูเพิ่มเติมที่PYTHONDONTWRITEBYTECODEตัวแปรสภาพแวดล้อม)
การใช้งานที่ไม่เหมาะสมข้างต้นแสดงรายการความเข้าใจสำหรับการวนลูป แต่เมื่อใช้python -cสไตล์จะค่อนข้างเป็นเรื่องรอง อีกวิธีหนึ่งที่เราอาจใช้ในทางที่ผิด (ตัวอย่าง) __import__:
python3 -Bc "for p in __import__('pathlib').Path('.').rglob('*.py[co]'): p.unlink()"
python3 -Bc "for p in __import__('pathlib').Path('.').rglob('__pycache__'): p.rmdir()"
คำติชมของคำตอบ
คำตอบที่ใช้พูด:
find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf
ดูเหมือนว่าจะมีประสิทธิภาพน้อยกว่าเพราะใช้สามกระบวนการ ใช้เวลาการแสดงออกปกติดังนั้นเราจึงไม่จำเป็นต้องมีการภาวนาที่แยกต่างหากจากfind grepในทำนองเดียวกันมันมี-deleteดังนั้นเราจึงไม่จำเป็นต้องมีการร้องขอแยกต่างหากrm- และตรงกันข้ามกับความคิดเห็นที่นี่มันจะลบไดเรกทอรีที่ไม่ว่างเปล่าตราบใดที่พวกมันถูกทำให้ว่างโดยอาศัยการจับคู่นิพจน์ทั่วไป
จากxargsหน้าคน:
find /tmp -depth -name core -type f -delete
ค้นหาไฟล์ชื่อ core ในหรือด้านล่าง directory / tmp และลบออก แต่มีประสิทธิภาพมากกว่าในตัวอย่างก่อนหน้า (เพราะเราหลีกเลี่ยงความต้องการใช้ fork (2) และ exec (2) เพื่อเรียกใช้ rm และเราไม่ต้องการ กระบวนการ xargs พิเศษ)
*__pycache__,*.pyc*และจะไม่เห็นความแตกต่างระหว่างไฟล์และไดเรกทอรีrmคำสั่งที่สร้างขึ้นส่วนใหญ่จะฟุ่มเฟือย