ลบไฟล์ทั้งหมดยกเว้นไฟล์เดียวด้วย rm


10

มีวิธีการลบไฟล์ทั้งหมดในไดเรกทอรียกเว้นไฟล์ที่มีชื่อไฟล์บางอย่างหรือไม่ ตัวอย่างเช่นถ้าผมมีไดเรกทอรีที่มีไฟล์file1, และfile2 dontdeleteจะมีวิธีการที่จะลบได้อย่างรวดเร็วใด ๆfile1และfile2ไม่dontdelete? ฉันรู้ว่าฉันทำได้rm file1 file2แต่ไม่สามารถทำงานกับไฟล์จำนวนมากได้ นอกจากนี้ฉันใช้ Mac OS X ถ้านั่นสร้างความแตกต่าง


Simple wildcard อาจเป็นคำตอบของคุณ: rm file * จะลบ file1 และ file2 แต่ไม่ใช่ dontdelete หากความต้องการของคุณซับซ้อนกว่านั้นขึ้นอยู่กับภาษาสคริปต์เชลล์คุณสามารถสร้างรายการไฟล์ที่คุณต้องการลบโดยใช้นิพจน์ปกติและไพพ์นี้กับคำสั่ง rm
therobyouknow

@ Rob: ใช่สถานการณ์ของฉันซับซ้อนกว่านั้น และคำตอบของอิกนาชิโอก็ใช้ได้ ขอบคุณ แต่!
Wuffers

คำตอบ:


16

ในทุบตี:

shopt -s extglob
rm !(dontdelete)

1
+1 ว้าวรวบรัดมาก จะจำไว้ในใจถ้าฉันต้องการมัน
therobyouknow

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