ค้นหาและลบไฟล์ทั้งหมดที่ไม่มีนามสกุลด้วยโฟลเดอร์และโฟลเดอร์ย่อย


16

ฉันมีโฟลเดอร์ที่ไม่มีไดเรกทอรีย่อยประมาณ 500 รายการ มีถังขยะจำนวนมากที่พบได้ในนั้นและฉันต้องการทำความสะอาด

ฉันได้ลบประเภทไฟล์บางอย่างที่ฉันไม่ต้องการเช่นรูปภาพด้วยคำสั่งนี้:

find . -mindepth 1 -iname "*.jpg" -type f -delete

อย่างไรก็ตามตอนนี้ฉันต้องการลบไฟล์ที่ไม่มีส่วนขยายทั้งหมด ไฟล์เช่น "รายการช็อปปิ้ง" intead ของ "Shopping list.txt"

ฉันลองคำสั่งต่อไปนี้แล้ว แต่มันไม่ทำงาน:

find . -mindepth 1 ! -iname "*.*" -type f -delete

คำตอบ:


20

ลองสิ่งนี้:

find . -type f  ! -name "*.*"  -delete

อย่างไรก็ตามทราบว่าเจตจำนงดังกล่าวข้างต้นไม่ลบไฟล์ที่มีชื่อลงท้ายด้วยยกตัวอย่างเช่น. foo.หากต้องการลบสิ่งเหล่านี้ให้ใช้สิ่งนี้แทน:

find . -type f  ! -name "*.?*" -delete

คำสั่งที่สองคือคำถามต่อไปของฉัน ขอบคุณมาก! ฉันสามารถพิมพ์find . -type f ! -name "*?.*" -deleteเพื่อลบไฟล์เช่น ".trash" หรืออะไรก็ได้ที่ฉันไม่ต้องการ ไม่ต้องกังวล - ไม่ใช่ไดเรกทอรีหลักของฉันดังนั้นฉันจึงไม่สูญเสียไฟล์ปรับแต่งใด ๆ
etsnyman

5
@etsnyman ดีกว่าที่จะทดสอบคำสั่งแรกโดยไม่มี-deleteตัวเลือก!
Radu Rădeanu

@etsnyman ไม่มากในการลบไฟล์ที่ขึ้นต้นด้วยจุดให้ใช้find . -type f -name ".*" -deleteหนึ่งในความคิดเห็นล่าสุดของคุณจะลบไฟล์ที่ไม่มีนามสกุล และสิ่งที่ราดูพูด! ทดสอบก่อน!
terdon

@ RaduRădeanuจริงผมทดสอบครั้งแรกในไดเรกทอรีหุ่นกับไฟล์ที่ว่างเปล่า ...
etsnyman

@terdon เครื่องหมายคำถามมีความหมายอย่างไรในคำสั่งที่สองของคุณ
Avinash Raj

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.