Android

วิธีลบ (ลบ) ไดเรกทอรีใน linux

What the Waters Left Behind Trailer 2 (2018) Los Olvidados

What the Waters Left Behind Trailer 2 (2018) Los Olvidados

สารบัญ:

Anonim

มีหลายวิธีในการลบไดเรกทอรีในระบบ Linux หากคุณใช้โปรแกรมจัดการไฟล์บนเดสก์ท็อปเช่นไฟล์ของ Gnome หรือโลมาของ KDE คุณสามารถลบไฟล์และไดเรกทอรีโดยใช้ส่วนต่อประสานผู้ใช้แบบกราฟิกของผู้จัดการ แต่ถ้าคุณทำงานบนเซิร์ฟเวอร์ headless หรือต้องการลบหลายไดเรกทอรีพร้อมกันตัวเลือกที่ดีที่สุดของคุณคือการลบไดเรกทอรี (โฟลเดอร์) ออกจากบรรทัดคำสั่ง

เราจะอธิบายวิธีการลบไดเรกทอรีใน Linux โดยใช้ rmdir , rm และ find คำสั่ง

ก่อนที่คุณจะเริ่ม

เมื่อคุณลบไดเรกทอรีโดยใช้ตัวจัดการไฟล์บนเดสก์ท็อปของคุณไดเรกทอรีนั้นจะถูกย้ายไปที่ถังขยะและสามารถกู้คืนได้ง่าย

ใช้ความระมัดระวังเป็นพิเศษเมื่อลบไฟล์หรือไดเรกทอรีออกจากบรรทัดคำสั่งเนื่องจากเมื่อลบไดเรกทอรีโดยใช้คำสั่งที่อธิบายไว้จะไม่สามารถกู้คืนได้ทั้งหมด

บนระบบไฟล์ Linux ส่วนใหญ่การลบไดเรกทอรีต้องได้รับอนุญาตให้เขียนในไดเรกทอรีและเนื้อหา มิฉะนั้นคุณจะได้รับข้อผิดพลาด“ ไม่อนุญาตให้ใช้งาน”

ชื่อไดเรกทอรีที่มีช่องว่างในนั้นจะต้องหนีด้วยแบ็กสแลช ( / )

การลบได rmdir ด้วย rmdir

rmdir เป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งสำหรับการลบไดเรกทอรีว่าง มันจะมีประโยชน์เมื่อคุณต้องการลบไดเรกทอรีถ้ามันว่างเปล่าโดยไม่จำเป็นต้องตรวจสอบว่าไดเรกทอรีว่างเปล่าหรือไม่

หากต้องการลบไดเร็กทอรีด้วย rmdir ให้พิมพ์คำสั่งตามด้วยชื่อของไดเร็กทอรีที่คุณต้องการลบ ตัวอย่างเช่นในการลบไดเรกทอรีชื่อ dir1 คุณจะต้องพิมพ์:

rmdir dir1

หากไดเรกทอรีไม่ว่างคุณจะได้รับข้อผิดพลาดต่อไปนี้:

rmdir: failed to remove 'dir1': No such file or directory

ในกรณีนี้คุณจะต้องใช้คำสั่ง rm หรือลบเนื้อหาไดเรกทอรีด้วยตนเองก่อนจึงจะสามารถลบได้

การลบไดเรคทอรี่ด้วย rm

rm เป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งสำหรับการลบไฟล์และไดเรกทอรี ซึ่งแตกต่างจาก rmdir คำสั่ง rm สามารถลบทั้งไดเรกทอรีที่ว่างเปล่าและไม่ว่าง

โดยค่าเริ่มต้นเมื่อใช้โดยไม่มีตัวเลือกใด ๆ rm จะไม่ลบไดเรกทอรี หากต้องการลบไดเรกทอรีว่างให้ใช้ตัวเลือก -d ( --dir ) และเพื่อลบไดเรกทอรีที่ไม่ว่างและเนื้อหาทั้งหมดใช้ตัวเลือก -r ( --recursive หรือ -R )

ตัวอย่างเช่นการลบไดเรกทอรีชื่อ dir1 พร้อมกับเนื้อหาทั้งหมดที่คุณจะพิมพ์:

rm -r dir1

หากไดเรกทอรีหรือไฟล์ภายในไดเรกทอรีได้รับการป้องกันการเขียนคุณจะได้รับแจ้งให้ยืนยันการลบ หากต้องการลบไดเร็กทอรีโดยไม่ได้รับพร้อมต์ให้ใช้อ็อพชัน -f :

rm -rf dir1

หากต้องการลบหลายไดเร็กทอรีพร้อมกันให้ใช้คำสั่ง rm ตามด้วยชื่อของชื่อไดเร็กทอรีที่คั่นด้วยช่องว่าง คำสั่งด้านล่างจะลบแต่ละไดเรกทอรีที่ระบุไว้และเนื้อหา:

rm -r dir1 dir2 dir3

ตัวเลือก -i บอก rm เพื่อให้คุณยืนยันการลบแต่ละไดเรกทอรีย่อยและไฟล์ หากไดเรกทอรีมีไฟล์จำนวนมากสิ่งนี้อาจสร้างความรำคาญให้คุณดังนั้นคุณอาจพิจารณาใช้ตัวเลือก -I สิ่งที่จะแจ้งให้คุณหนึ่งครั้งก่อนดำเนินการลบต่อไป

rm -rI dir1

หากต้องการลบประเภทไดเรกทอรี y และกด Enter

rm: remove 1 argument recursively? y

คุณยังสามารถใช้การขยายปกติเพื่อจับคู่และลบหลายไดเรกทอรี ตัวอย่างเช่นหากต้องการลบไดเรกทอรีระดับแรกทั้งหมดในไดเรกทอรีปัจจุบันที่ลงท้ายด้วย _bak คุณจะต้องใช้คำสั่งต่อไปนี้:

rm -r *_bak

การใช้การขยายปกติเมื่อลบไดเรกทอรีอาจมีความเสี่ยง ขอแนะนำก่อนเพื่อแสดงรายการไดเร็กทอรีด้วย ls สั่ง ls เพื่อให้คุณสามารถดูว่าไดเร็กทอรีใดที่จะถูกลบก่อนรันคำสั่ง rm

การลบไดเรกทอรีด้วยการ find

find คือโปรแกรมอรรถประโยชน์บรรทัดคำสั่งที่ให้คุณค้นหาไฟล์และไดเรกทอรีตามนิพจน์ที่กำหนดและดำเนินการกับไฟล์หรือไดเรกทอรีที่ตรงกันแต่ละไฟล์

สถานการณ์ที่พบบ่อยที่สุดคือการใช้คำสั่ง find เพื่อลบไดเรกทอรีตามรูปแบบ ตัวอย่างเช่นในการลบไดเรกทอรีทั้งหมดที่ลงท้ายด้วย _cache ในไดเรกทอรีการทำงานปัจจุบันคุณจะเรียกใช้:

find. -type d -name '*_cache' -exec rm -r {} +

ลองวิเคราะห์คำสั่งด้านบน:

  • /dir - ค้นหาซ้ำในไดเรกทอรีการทำงานปัจจุบัน ( . ) -type d - จำกัด การค้นหาไดเรกทอรี -name '*_cache' - ค้นหาเฉพาะไดเร็กทอรีที่ลงท้ายด้วย _cache -exec - เรียกใช้งานคำสั่งภายนอกด้วยอาร์กิวเมนต์ที่เป็นทางเลือกในกรณีนี้คือ rm -r {} + - ผนวกไฟล์ที่พบต่อท้ายคำสั่ง rm

การลบไดเรกทอรีว่างทั้งหมด

หากต้องการลบไดเรกทอรีว่างทั้งหมดในแผนผังไดเรกทอรีคุณจะต้องใช้:

find /dir -type d -empty -delete

นี่คือคำอธิบายสำหรับตัวเลือกที่ใช้:

  • /dir - ค้นหาซ้ำในไดเรกทอรี /dir -type d - จำกัด การค้นหาไดเรกทอรี -empty - จำกัด การค้นหาเฉพาะกับไดเรกทอรีที่ว่างเปล่า -delete - ลบไดเร็กทอรีว่างทั้งหมดที่พบในทรีย่อย -delete สามารถลบไดเรกทอรีที่ว่างเปล่าเท่านั้น

ใช้ตัวเลือก -delete ด้วยความระมัดระวังอย่างยิ่ง บรรทัดคำสั่ง find ถูกประเมินเป็นนิพจน์และหากคุณเพิ่มตัวเลือก -delete ก่อนคำสั่งจะลบทุกอย่างด้านล่างจุดเริ่มต้นที่คุณระบุ ใช้ -delete เป็นตัวเลือกสุดท้ายเสมอและก่อนที่จะลบให้ทดสอบคำสั่งก่อนโดยไม่ใช้ตัวเลือก -delete

/ bin / rm: รายการอาร์กิวเมนต์ยาวเกินไป

ข้อความแสดงข้อผิดพลาดนี้ปรากฏขึ้นเมื่อคุณใช้คำสั่ง rm เพื่อลบไดเรกทอรีที่มีไฟล์จำนวนมาก สิ่งนี้เกิดขึ้นเนื่องจากจำนวนไฟล์มากกว่าขีด จำกัด ของระบบตามขนาดของอาร์กิวเมนต์บรรทัดคำสั่ง

มีวิธีแก้ไขปัญหาต่าง ๆ ที่แตกต่างกันนี้ ตัวอย่างเช่นคุณสามารถ cd ไปยังไดเรกทอรีและด้วยตนเองหรือใช้วนรอบเพื่อลบไดเรกทอรีย่อยทีละ

วิธีที่ง่ายที่สุดคือการลบไฟล์ทั้งหมดในไดเรกทอรีก่อนด้วยคำสั่ง find จากนั้นลบไดเรกทอรี:

find /dir -type f -delete && rm -r /dir

ข้อสรุป

ด้วย rm และ find คุณสามารถลบไดเรกทอรีตามเกณฑ์ต่าง ๆ ได้อย่างรวดเร็วและมีประสิทธิภาพ

การลบไดเรกทอรีเป็นกระบวนการที่ง่ายและสะดวก แต่คุณต้องระวังไม่ลบข้อมูลสำคัญ

rm rmdir ค้นหาเทอร์มินัล