คุณได้ลบ (เกือบ) ไดเรกทอรีบ้านทั้งหมดของคุณ!
rm -r something ซ้ำลบไฟล์และไดเรกทอรีใน / อันเดอร์บางสิ่งบางอย่าง ; มันจะล้มเหลวในรายการที่ไม่ได้รับอนุญาตให้ลบไม่ว่าจะเป็นเพราะพวกเขาเป็นเจ้าของโดยผู้ใช้อื่น (เช่นroot) หรือเพราะพวกเขากำลังใช้งานอยู่ (เช่นเมาท์ GVFS)
หากคุณไม่ได้เพิ่ม-f(เหมือนในrm -rf something) คุณจะได้รับสิ่งต่อไปนี้:
rm: remove write-protected regular file ‘something’?
rm: descend into write-protected directory ‘something’?
ณ จุดนี้คุณสามารถยกเลิกได้และจากนั้นคุณอาจรู้ว่าคุณดำเนินการคำสั่งที่ไม่ถูกต้อง
ข้อเสนอแนะจากชุมชนในการหลีกเลี่ยงอุบัติเหตุดังกล่าว
หมายเหตุ: ชุมชน wiki ทุกคนโปรดมีส่วนร่วม
สำหรับไฟล์บางไฟล์ใช้-iตัวเลือกเพื่อรับการยืนยันในการลบไฟล์หรือไดเรกทอรี:
$ rm -ri something/
rm: remove regular file ‘something/file~’? y
rm: descend into directory ‘something’? y
rm: remove regular file ‘something/file’? y
rm: remove directory ‘something’? y
หากลบออกจากไดเรกทอรีปัจจุบันให้ใส่คำนำหน้าโดย a ./เพื่อหลีกเลี่ยงการลบตำแหน่งอื่นโดยไม่ตั้งใจ:
$ cd something
$ rm -v ./*~
removed ‘./file~’
./ดังกล่าวข้างต้นเป็นแสดงให้เห็นถึงการใช้งานของ หากมีไดเรกทอรีย่อยคุณก็สามารถใช้งานได้rm -v something/*~เช่นกัน ระวัง : อย่าคิดว่าrm ./.*จะลบไฟล์ที่ซ่อนอยู่ทั้งหมดในไดเรกทอรีปัจจุบัน ดูคำถามนี้ Serverfaultสำหรับการแก้ไขปัญหาในไฟล์ที่ซ่อนอยู่
ย้ายมากกว่าลบ:แทนที่จะลบไฟล์ซ้ำในตอนแรกที่ฉันคุ้นเคยกับการย้ายไฟล์ที่ฉันต้องการกำจัดที่ไหนสักแห่งก่อนที่ฉันจะลบมันในที่สุด หากมีข้อผิดพลาดมันง่ายที่จะกู้คืน
mv -b SOURCE DEST
ใช้find(อาจมีgrep) เพื่อดูตัวอย่างถ้าคุณต้องการลบไฟล์ที่เลือกซ้ำ คุณควรพยายามทำให้สิ่งนี้เกิดขึ้นได้ยาก แต่ถ้าคุณต้อง ...
findโดยไม่มีข้อโต้แย้งจะแสดงรายการไฟล์ / ไดเรกทอรีทั้งหมดซ้ำ ๆ ภายใต้ไฟล์ปัจจุบัน คุณควรลองค้นหาman findวิธีการเลือก (ขุมสมบัติ) แต่ถ้าคุณไม่ต้องการรบกวนคุณสามารถใช้grepตัวกรองที่คุ้นเคยเพื่อกรองไฟล์ที่คุณต้องการลบ
- สมมติว่าฉันเป็นแฮ็กเกอร์เคอร์เนล uber-l33t และฉันรู้สึกรำคาญกับไฟล์ "ตัวอย่าง" จำนวนไม่กี่ KB ในแผนผังต้นทางของฉัน ฉันต้องการลบไฟล์ทั้งหมดที่มีอยู่ในชื่อ ดังนั้นฉันพิมพ์
find | grep exampleซึ่งให้20 ไฟล์เหล่านี้กับฉัน ที่ดูดีดังนั้นฉันไปและลบไฟล์ที่แน่นอนเหล่านั้นพร้อมกับการrm -vส่งออก verbose ดังกล่าวก่อนหน้านี้ผ่านxargs:
ค้นหา | ตัวอย่าง grep | xargs rm -v
ซึ่งให้ผลลัพธ์นี้กับฉัน ปัญหาการแสดงตัวอย่างป้องกันดังกล่าวที่บอกว่าคุณพิมพ์ผิดและพิมพ์แทนsampleexample
ไม่ควรใช้โซลูชันด้านบนหากคุณมีชื่อไฟล์ที่มีช่องว่างอักขระแท็บบรรทัดใหม่หรือเครื่องหมายคำพูด ( "หรือ') เนื่องจากจะทำให้เกิดความxargsล้มเหลวหรือฟีดrmด้วยชื่อไฟล์ที่ไม่สมบูรณ์ซึ่งในกรณีที่เลวร้ายที่สุดอาจทำให้การลบผิด ไฟล์ วิธีที่ปลอดภัยที่จะทำข้างต้นคือทำทุกอย่างด้วยfindตัวดำเนินการและการกระทำ
ต่อไปนี้จะแสดงไฟล์ทั้งหมดที่มีคำว่า example
find . -name "*example*"
ถ้ารายการที่เป็นไฟล์ที่คุณต้องการเอาออกใช้การกระทำที่จะผ่านไฟล์ไปยัง-execrm
find . -name "*example*" -exec rm -v {} +
ดูใช้หาfindเพื่อขอความช่วยเหลือมากขึ้นกับการใช้