คุณได้ลบ (เกือบ) ไดเรกทอรีบ้านทั้งหมดของคุณ!
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
ซึ่งให้ผลลัพธ์นี้กับฉัน ปัญหาการแสดงตัวอย่างป้องกันดังกล่าวที่บอกว่าคุณพิมพ์ผิดและพิมพ์แทนsample
example
ไม่ควรใช้โซลูชันด้านบนหากคุณมีชื่อไฟล์ที่มีช่องว่างอักขระแท็บบรรทัดใหม่หรือเครื่องหมายคำพูด ( "
หรือ'
) เนื่องจากจะทำให้เกิดความxargs
ล้มเหลวหรือฟีดrm
ด้วยชื่อไฟล์ที่ไม่สมบูรณ์ซึ่งในกรณีที่เลวร้ายที่สุดอาจทำให้การลบผิด ไฟล์ วิธีที่ปลอดภัยที่จะทำข้างต้นคือทำทุกอย่างด้วยfind
ตัวดำเนินการและการกระทำ
ต่อไปนี้จะแสดงไฟล์ทั้งหมดที่มีคำว่า example
find . -name "*example*"
ถ้ารายการที่เป็นไฟล์ที่คุณต้องการเอาออกใช้การกระทำที่จะผ่านไฟล์ไปยัง-exec
rm
find . -name "*example*" -exec rm -v {} +
ดูใช้หาfind
เพื่อขอความช่วยเหลือมากขึ้นกับการใช้