ข้ามไปยังเนื้อหาหลัก
ลด 50% ทุกแพลน เวลาจำกัด เริ่มต้นที่ $2.48/mo
12 min left
Server และ OS

วิธีลบ Directory ใน Linux อย่างปลอดภัย: rmdir, rm -r, find

Nick Silver โดย Nick Silver 12 นาทีในการอ่าน อัปเดตเมื่อ Sep 22, 2025
A lone ultrareal laptop at 3/4 angle on a wet surface; screen shows two crisp terminal lines: ls -ld -- '$DIR' rm -I -r -- '$DIR' From the right-side port, a cyan/magenta holographic ribbon curves out to a manila folder floating to the right of the laptop; the folder’s right half frays into fine paper dust mid-air. BR2049 lighting, UV rim, subtle rain specks, sodium-amber haze + single low skyline only.

เลือกเครื่องมือให้ถูก แล้วการลบโฟลเดอร์บน Linux จะกลายเป็นเรื่องง่ายมาก ใช้ rmdir สำหรับพาธที่ว่างเปล่า rm -r สำหรับไดเรกทอรีที่ยังมีข้อมูลอยู่ และ หา เมื่อต้องการลบแค่สิ่งที่อยู่ภายใน นี่คือ วิธีลบไดเรกทอรีบน Linuxพร้อมค่าเริ่มต้นที่ปลอดภัย การตรวจสอบที่รวดเร็ว และวิธีแก้ข้อผิดพลาดที่อาจขัดขวางการทำงาน ถ้าต้องการแค่คำตอบเร็ว ดูตารางสรุปก่อน แล้วค่อยอ่านต่อในส่วนของข้อควรระวัง

 

 

สรุปคำสั่ง: คัดลอก วาง แล้วไปต่อ

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

งาน คำสั่งที่ปลอดภัยที่สุด แฟล็กเสริมหรือหมายเหตุ
ลบไดเรกทอรีว่าง ลบไดเรกทอรี่ DIR or rm -d DIR เพิ่ม -p เพื่อลบไดเรกทอรีแม่ด้วย หากว่างเปล่าแล้ว
ลบไดเรกทอรีที่มีข้อมูลอยู่ โดยให้ยืนยันครั้งเดียว rm -I -r DIR สมดุลระหว่างความเร็วและความปลอดภัย
ลบไดเรกทอรีที่มีข้อมูลอยู่โดยไม่ถามยืนยัน rm -rf — DIR ยืนยันด้วย ls -ld — DIR ตรวจสอบให้แน่ใจก่อนรัน
เก็บไดเรกทอรีหลักไว้ แต่ลบเนื้อหาภายใน find DIR -mindepth 1 -delete รองรับไฟล์และโฟลเดอร์ที่ซ่อนอยู่ด้วย
ลบเฉพาะไดเรกทอรีที่ว่างเปล่า ค้นหา DIR -type d -empty -delete ใช้ทำความสะอาดหลัง deploy เสร็จได้เลย
ลบตามรูปแบบชื่อ find DIR -type d -name 'cache*' -prune -exec rm -rf {} + ทำงานได้เร็วแม้กับโครงสร้างไดเรกทอรีขนาดใหญ่

เก็บ cheat sheet นี้ไว้ใกล้มือขณะที่คุณเรียนรู้วิธีลบไดเรกทอรีใน Linux 

ลบไดเรกทอรีที่ว่างเปล่าด้วย rmdir or rm -d

Ultrareal steel file-cabinet drawer pulled fully open, rails and felt pads visible, absolutely empty. Tiny embossed stickers on the front: RMDIR and EMPTY. A soft sodium-amber haze drifts behind a faint skyline silhouette; cyan signage glints along the brushed metal lip; micromotes and hairline scratches read true.

ไดเรกทอรี่เปล่า เป็นกรณีที่มีความเสี่ยงต่ำ หากต้องการลบเฉพาะโฟลเดอร์ปลายสาขา rmdir ทำได้ตรงๆ เลย หรือถ้าอยากอยู่บน rm, ใช้ rm -d ก็ได้ผลเหมือนกัน ทั้งสองคำสั่งจะหยุดทันทีเมื่อพบ path ที่ไม่ว่างเปล่าซึ่งเป็นตัวช่วยที่ดีสำหรับผู้เริ่มต้นที่กำลังเรียนรู้วิธีลบไดเรกทอรีใน terminal

  • rmdir PROJECT/tmp ลบโฟลเดอร์ที่ว่างเปล่าออก และไม่แจ้งผลใดๆ เมื่อโฟลเดอร์นั้นไม่มีอยู่แล้ว
  • rmdir -p foo/bar/baz ลบ path ที่ระบุ จากนั้นลบไดเรกทอรีแม่ที่ว่างเปล่าต่อเนื่องกันไป เคลียร์โครงสร้างโฟลเดอร์ทั้งหมดในครั้งเดียว
  • rm -d empty_folder ลบได้เฉพาะเมื่อไดเรกทอรีว่างเปล่าเท่านั้น ซึ่งทำงานเหมือนกับ rmdir สำหรับผู้ที่ใช้งานบน rm.
  • rmdir –ignore-fail-on-non-empty DIR ซ่อนข้อความแจ้งข้อผิดพลาด "ไม่ว่างเปล่า" ในสคริปต์ที่ต้องการ output ที่เรียบร้อย
  • เพิ่ม -v เพื่อแสดงผลลัพธ์ เช่น rmdir -pv foo/bar/baz.

ปัญหาที่พบบ่อยเมื่อพยายามลบไดเรกทอรีใน Linux คือ หากโฟลเดอร์ยังมีไฟล์อยู่ rmdir คำสั่งจะปฏิเสธการทำงาน นั่นคือสัญญาณให้คุณเปลี่ยนไปใช้การลบแบบ recursive แทน 

อ่านเพิ่มเติม: เชื่อมต่อกับเซิร์ฟเวอร์ Linux ด้วย XRDP

ลบไดเรกทอรีที่มีเนื้อหาด้วย rm

Ultrareal industrial paper shredder as the single hero; mouth loaded with multiple manila folders and dividers. The folders are clearly stuffed with paper. A tiny metal badge on the front reads RM -R; a small hazard triangle beside it reads FORCE.

การลบแบบเรียกซ้ำคือ rm -r or rm -rf. โดยสรุป ความแตกต่างอยู่ที่ความเร็วกับการยืนยัน ผู้ที่เริ่มเรียนรู้วิธีลบไดเรกทอรีที่มีเนื้อหาใน Linux มักเริ่มจาก rm -r และเพิ่ม prompt ยืนยัน ส่วนทีมที่ทำงานแบบอัตโนมัติจะเพิ่ม -f หลังจากตรวจสอบ path ให้แน่ใจแล้ว

เริ่มจาก pattern ที่ปลอดภัยและมั่นใจได้:

  • Prompt once: ขอข้อมูลครั้งเดียว rm -I -r DIR ถามยืนยันหนึ่งครั้งก่อนเริ่มลบ เหมาะกว่า -i บนต้นไม้ขนาดใหญ่
  • ให้ยืนยันทุกขั้นตอน: rm -ri DIR ทำงานช้า แต่มีประโยชน์สำหรับโครงสร้างขนาดเล็กเมื่อต้องการดูทุกขั้นตอน
  • ลบแบบ force และ recursive: rm -rf DIR ข้ามการยืนยันและข้อผิดพลาดส่วนใหญ่ ตรวจสอบ pwd, ls -ld — DIR, และ echo "$DIR" ให้ดีก่อนกด Enter
  • โหมดรายละเอียด: -v แสดง path ที่ถูกลบทุกรายการ เช่น rm -rfv build/.
  • การป้องกัน root และ mount: ระบบสมัยใหม่จะบล็อก rm -rf / ผ่าน –preserve-rootในสคริปต์ เพิ่ม –one-file-system เพื่อไม่ให้ข้ามข้าม mount

ก่อนจะ force-delete บนเครื่องที่กำลังใช้งานอยู่ ให้ใช้เวลาสักครึ่งนาทีเพื่อตรวจสอบ target ก่อน แสดงด้วย ls -ld — "$DIR"แล้วตรวจดู quoting และ glob ให้ละเอียด วิธีเรียนรู้การลบไดเรกทอรีใน Linux ที่ถูกต้องคือลองใช้ -I ก่อน แล้วค่อยรันแบบไม่ต้องโต้ตอบ ตรวจสอบอย่างรอบคอบ สร้างนิสัยที่ทำซ้ำได้

linux-vps Linux Hosting แบบง่าย

อยากได้วิธีที่ดีกว่าในการ host เว็บไซต์และเว็บแอปไหม? พัฒนาสิ่งใหม่อยู่หรือเปล่า? หรือแค่ไม่ชอบ Windows? เราจึงมี Linux VPS

รับ Linux VPS ของคุณ

ชื่อแปลก ยัติภังค์นำหน้า และปัญหาที่ซ่อนอยู่

A stretch of caution tape pulled taut across frame, ultrareal vinyl texture with subtle wrinkles. Black print repeats -TMP at intervals after each CAUTION.

บางพาธขึ้นต้นด้วยขีดกลาง หรือมีไบต์ที่ทำให้การ parse ผิดพลาด ให้ส่ง เพื่อหยุดการ parse option หรือเพิ่ม ./ ไว้หน้าชื่อไฟล์

วิธีที่ปลอดภัยสำหรับชื่อไฟล์แปลก ๆ:

rm -r -- --weird
rm -r ./-cache

นิสัยเล็ก ๆ เหล่านี้ช่วยให้การลบไดเรกทอรีใน Linux ไม่น่าเครียดบน shared server และ remote session ถ้าต้องการเก็บไดเรกทอรีแม่ไว้แต่ลบเนื้อหาข้างใน ให้ใช้คำสั่งที่รองรับ depth แทน ซึ่งเราจะพูดถึงต่อไปในคู่มือ How to Delete a Directory in Linux

เก็บโฟลเดอร์ไว้ แต่ล้างข้อมูลข้างในออก

Ultrareal manila folder with a small bottom trapdoor built into the tab-side corner, hinged and slightly open so a faint stream of holographic “file shards” falls away. Etched on the tab: FIND and MIND1 (for -mindepth 1)

งานหลายอย่างต้องการไดเรกทอรีที่ว่างเปล่า ไม่ใช่ไดเรกทอรีที่หายไป ไม่ว่าจะเป็น log rotation, build pipeline หรือการจัดการ VPS มีสองแนวทางสำหรับการลบไฟล์ทั้งหมดในไดเรกทอรีใน Linux โดยยังคงไดเรกทอรีแม่ไว้

  • ข้ามไดเรกทอรีแม่ด้วย หา:
find /var/tmp/app -mindepth 1 -delete
  • หรือดำเนิน rm บนแบตช์:
find ./cache -mindepth 1 -exec rm -rf {} +

ทั้งสองวิธีจัดการไฟล์ที่ซ่อนอยู่ได้ (รวมถึง dotfile) ซึ่งเป็นจุดที่คำสั่ง rm * ทำงานพลาด ถ้าคำถามของคุณคือวิธีลบไฟล์ทั้งหมดในไดเรกทอรีใน Linux นี่คือวิธีที่เชื่อถือได้

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

อ่านเพิ่มเติม: ดูรายการ Service ที่กำลังทำงานอยู่ใน Linux

ลบแบบเจาะจงด้วย หา: ชื่อ, Depth, Pruning

คุณอาจต้องการลบเฉพาะ cache tree, โฟลเดอร์ build ระดับแรก หรือ log เก่า ๆ เท่านั้น นี่คือชุด pattern กระชับสำหรับ ค้นหาลบไดเรกทอรี่ งาน

งาน คำสั่งสแนปช็อต หมายเหตุ
ลบเฉพาะ cache*/ ไดเรกทอรีภายใต้ project find . -type d -name 'cache*' -prune -exec rm -rf {} + -prune ข้ามการลงไปในไดเรกทอรีที่ตรงกัน ทำงานเร็วกว่ามากเมื่อโครงสร้างไฟล์มีขนาดใหญ่
ลบไดเรกทอรีตามระดับความลึก find ./dist -mindepth 1 -maxdepth 1 -type d -exec rm -rf {} + กำหนดเป้าหมายเฉพาะไดเรกทอรีลูกระดับแรกภายใต้ dist/.
ลบเฉพาะไดเรกทอรีที่ว่างเปล่า find . -type d -empty -delete ใช้ทำความสะอาดหลัง deploy เสร็จได้เลย
ลบไฟล์ที่ตรงกับรูปแบบที่กำหนด find logs -type f -name '*.gz' -delete คงไฟล์ log ล่าสุดไว้โดยไม่แตะต้อง
ลบทุกอย่างแต่เก็บไดเรกทอรีหลักไว้ find /data/tmp -mindepth 1 -delete เซอร์วิสต่าง ๆ ยังคงใช้งานไดเรกทอรีหลักได้ตามปกติ

ใช้ -print สำหรับรันทดสอบก่อน แล้วค่อยลบออกเมื่อต้องการรันจริง นี่คือแนวทางปฏิบัติจริงของการลบไดเรกทอรีใน Linux ที่กำหนดขอบเขตได้ชัดเจนและดำเนินการได้รวดเร็ว Gotcha บน BusyBox บางรุ่นที่ตัดฟีเจอร์ออกไปมาก คำสั่ง -delete อาจไม่มีให้ใช้ ให้ใช้ -exec rm -rf {} + แทนที่นี้

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

ระบบป้องกันที่ช่วยให้คุณไม่พลาด

An ultrareal lockout/tagout padlock + hasp assembly as the lone hero, brushed steel and scuffed red enamel, bead of condensation on the shackle; a fiber safety tag hangs from the hasp with three bold engravings: RM -I, ONE FS, PRESERVE ROOT.

คำสั่งที่ทรงพลังควรมีค่าเริ่มต้นที่รอบคอบ สร้างนิสัยเหล่านี้ไว้ เพื่อที่การลบไดเรกทอรีใน Linux ด้วยคำสั่งต่าง ๆ จะไม่พาคุณไปสู่ปัญหาที่ไม่คาดคิด

  • ขอให้แสดงข้อความยืนยันครั้งเดียวด้วย rm -I -r DIR ขณะที่คุณตรวจสอบพาธบนหน้าจอ
  • ใส่เครื่องหมายคำพูดให้พาธทุกครั้ง: rm -rf — "$DIR" ป้องกันปัญหาจากช่องว่าง glob และชื่อที่ขึ้นต้นด้วยขีดลบ
  • ตรวจสอบเป้าหมายที่แน่ชัด: ls -ld — "$DIR" แสดงหนึ่งบรรทัดพร้อม mode เจ้าของ และพาธ
  • การอยู่ภายใน filesystem เดียวกัน: rm -rf –one-file-system "$DIR" ป้องกันการข้ามเข้า mounted volumes
  • เปิดการป้องกัน Root ไว้ และคง –preserve-root ในสถานที่
  • ล้าง immutable bit เมื่อจำเป็น: lsattr -d "$DIR" เพื่อตรวจสอบ, chattr -i "$DIR" เพื่อลบออก

หากการลบยังคงล้มเหลวหรือค้าง ให้ตรวจสอบสาเหตุที่เป็นไปได้

รันการทดสอบทำความสะอาดบน Linux VPS ของ Cloudzy แล้วสร้างต่อไป

Ultrareal 1U rack server sits firmly on a cloud (cloud = VPS). A short SFP+ fiber patch links the server to an open laptop at 3/4 angle. On the laptop’s glassy terminal, two big stacked engravings: RM -I -R and ROLLBACK (toggle dot lit). On the rack face, small badges: NVME, 10 GBPS, DDR5.

ถ้าต้องการเครื่อง remote ที่เสถียรสำหรับทดลอง rm, rmdir และ หา ปลอดภัย, เปิดใช้งาน การโฮสติ้ง Linux VPS และทำงานใน shell ที่สะอาด ราคาเข้าถึงได้ รวดเร็ว และพร้อมให้บริการใน 13 region พร้อม 11 การแจกจ่าย Linux พร้อมใช้งานทันที คุณได้รับ การเข้าถึง root, NVMe SSD ที่เก็บข้อมูล storage และ DDR5 RAM บนแพ็กเกจใหม่ พร้อมทั้ง การป้องกัน DDoS และ uptime 99.95% ไม่มีสัญญาผูกมัด แบนด์วิธสูงและ latency ต่ำรวมอยู่ในแพ็กเกจ รองรับการเชื่อมต่อสูงสุด 10 Gbps ระบุไว้บนการ์ดแพ็กเกจ

  • เครือข่ายโลก: deploy ได้มากกว่า 12 ที่ตั้ง ครอบคลุม New York, Los Angeles, Miami, Amsterdam, London, Germany, Switzerland, Utah, Dallas, Las Vegas และ Singapore เพื่อเส้นทางที่เร็วขึ้นถึงผู้ใช้ของคุณ
  • Root access + 11 distros: เลือก Linux ที่คุณต้องการและควบคุมได้เต็มที่ตั้งแต่วันแรก
  • ฮาร์ดแวร์สมัยใหม่: NVMe SSD storage และ DDR5 RAM ขับเคลื่อน instances ประสิทธิภาพยังคงคมชัดแม้ I/O หนัก
  • เครือข่าย + เวลาทำงาน: การเชื่อมต่อ latency ต่ำ แบนด์วิธสูง และเป้าหมาย uptime 99.95% ช่วยให้งานที่กำหนดเวลาทำงานได้ตรงเวลา
  • ความปลอดภัย: การป้องกัน DDoS ครอบคลุมทุก server ทำให้การบำรุงรักษาประจำไม่สะดุด
  • ความสะดวก: ตัวเลือก OS ที่ติดตั้งมาพร้อม, IPv6 ฟรี และช่องทางชำระเงินหลายรูปแบบ ทำให้การตั้งค่าตรงไปตรงมา

ต้องการ desktop เต็มรูปแบบ? เลือก Linux RDP one-click app ระหว่าง checkout จะได้ Linux VPS พร้อม XRDP, GDM3และ GNOME GUI ของ GNOME ติดตั้งไว้แล้วใน Ubuntuเพื่อ remote เข้าใช้งานได้ด้วยคลิกเดียว รองรับ 12 ที่ตั้งเดิม และคง uptime 99.95% เป้าหมาย มี ไม่มีค่าใช้งานเพิ่มเติม สำหรับการตั้งค่า RDP ที่ติดตั้งไว้ล่วงหน้า

โดยสรุป เปิด Linux VPS ราคาประหยัด เลือก distro ที่ต้องการ เก็บสิทธิ์ root ไว้ และถ้าจำเป็นให้เพิ่ม Linux RDP desktop ระหว่างการสั่งซื้อ จากนั้นฝึกใช้คำสั่งลบแบบ interactive สร้าง snapshot แล้วทำซ้ำจนคำสั่งชุดนี้คล่องมือ

แก้ปัญหา: "Permission Denied", "Directory Not Empty" และ path ที่ยังถูกใช้งานอยู่

A single ultrareal folder perched over a narrow chute (this chute symbolizes troubleshooting, so engrave it with a troubleshooting icon); inside it, smaller sub-folders and faint .dotfiles icons fade as they drop. Lip engravings top-to-bottom on the chute: SYMPTOM, CHECK, FIX; opposite side: NOT EMPTY, LOOK, FIND -DELETE.

ปัญหาส่วนใหญ่เกิดซ้ำในรูปแบบเดิม ใช้ขั้นตอน symptom → check → fix เพื่อให้การลบไดเรกทอรีใน Linux ไม่สะดุดการ deploy

1) ขึ้น "Permission denied" กับไดเรกทอรีที่คุณเป็นเจ้าของ
ตรวจสอบ attribute ด้วย lsattr -d DIRถ้ามี immutable flag i ให้ลบออกด้วย sudo chattr -i DIRแล้วลองใหม่อีกครั้ง พบได้บ่อยบนระบบที่ hardened และ container บางตัว

2) ขึ้น "Operation not permitted" แม้จะใช้ sudo
ตรวจสอบว่า mount ไม่ได้อยู่ในโหมด read-only mount | grep DIR or findmnt DIR จะบอกสถานะปัจจุบัน ให้ remount เป็น read-write ก่อนดำเนินการ หรือเลือก path อื่นแทน

3) ขึ้น "Directory not empty" หลังจากใช้ rmdir
ยังมี entry ค้างอยู่ ให้เปลี่ยนไปใช้:

find DIR -mindepth 1 -delete

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

4) service สร้างโฟลเดอร์ขึ้นมาใหม่
มี process กำลังเขียนไปยัง path นั้น หยุดหรือ restart ให้เรียบร้อยก่อน แล้วค่อยลบ ถ้า environment เสียหายด้วย คู่มือเรื่อง systemctl คำสั่งไม่พบ จะช่วยแก้ปัญหานั้นก่อน ตัวอย่างที่เจอจริง: Nginx กำลังเขียนไปที่ /var/log/nginx/ บนเครื่อง staging; เมื่อหยุด nginx.service ล้าง lsofการลบก็สำเร็จ และ log กลับมาทำงานได้ตามปกติ

5) ขึ้น "Device or resource busy"
มี process กำลังเปิด handle อยู่ภายในไดเรกทอรีนั้น lsof +D ไดเรกทอรี่ or fuser -vm ไดเรกทอรี่ จะแสดงสิ่งที่กำลังทำงานอยู่ หยุด process นั้นให้เรียบร้อยแล้วค่อยลบ ถ้าต้องการดู socket อย่างรวดเร็วก่อนล้าง log ให้ใช้ คำสั่ง Netstat บน Linux บทความนี้ครอบคลุมการตรวจสอบเบื้องต้นอย่างรวดเร็ว

6) ชื่อไฟล์ที่ผิดปกติ: เว้นวรรค, ขึ้นบรรทัดใหม่, หรือขึ้นต้นด้วยขีดลบ
ใช้ or ./ ไว้หน้าชื่อที่ขึ้นต้นด้วยขีดลบ และใส่เครื่องหมายคำพูดครอบทุก string สำหรับการจัดการชื่อไฟล์แปลกๆ จำนวนมาก ให้รัน find . -print0 | xargs -0 เพื่อให้ whitespace ไม่ทำให้คำสั่งพัง

เมื่อแก้ปัญหาเหล่านี้แล้ว อุปสรรคส่วนใหญ่ก็หมดไป ถ้าไม่ต้องการลบถาวร ให้ใช้วิธี trash แทน

ย้ายไป Trash แทนการลบทิ้ง: trash-cli และ ถังขยะ

Ultrareal blue desktop recycling bin (matte polymer with tiny injection marks, slot opening), a folded paper folder edge peeking at the slot. Etched along the lip: TRASH-CLI, TRASH. A small side badge glows RESTORE to suggest reversal.

ไม่จำเป็นต้องลบทุกอย่างออกอย่างถาวร เดสก์ท็อปและเซิร์ฟเวอร์ที่รองรับ GLib รองรับ trash flow เพื่อให้คุณตรวจสอบและกู้คืนไฟล์ได้ ถ้ากำลังเรียนรู้วิธีลบไดเรกทอรีใน Linux และต้องการตัวช่วยกันพลาด ลองใช้คำสั่งเหล่านี้:

  • ลบไฟล์ PATH ย้ายไฟล์และไดเรกทอรีไปยัง trash gio list trash:// ใช้ดูรายการไฟล์ใน trash
  • กับ trash-cli, ใช้ ลบ PATH, trash-list, trash-restore และ trash-empty สำหรับ workflow บน command line แบบง่าย

ช้ากว่า rmแต่ความปลอดภัยที่ได้มาคุ้มค่า ถ้าต้องการขั้นตอนตรวจสอบเพิ่มเติม ดังนั้น ถ้าต้องการเรียนรู้วิธีลบไดเรกทอรีใน Linux โดยไม่เสี่ยงกับข้อมูลจริง ให้เริ่มจาก trash ก่อน แล้วค่อยเปลี่ยนมาใช้ rm.

ความคิดเห็นสุดท้าย

ตอนนี้คุณมีชุดเครื่องมือครบสำหรับการลบไดเรกทอรีใน Linux ซึ่งรวมถึง rmdir สำหรับพาธที่ว่างเปล่า rm -I -r สำหรับการลบแบบ recursive ที่ปลอดภัย, rm -rf หลังจากตรวจสอบเป้าหมายแล้วเท่านั้น และ find -mindepth 1 -delete เมื่อต้องการล้างเนื้อหาภายในโดยไม่ลบไดเรกทอรีหลัก ใส่เครื่องหมายคำพูดครอบ path, คง –preserve-rootไว้, อยู่บน filesystem เดียวกัน และลบ immutable bit ออกถ้าติดขัด ส่วนการตรวจสอบแก้ปัญหาอื่นๆ จะจัดการส่วนที่เหลือให้

และอย่าลืมว่า ถ้าต้องการเซิร์ฟเวอร์ที่พร้อมใช้สำหรับฝึกจริง ให้เปิด Cloudzy Linux VPS เซิร์ฟเวอร์ ราคาจับต้องได้และเหมาะสำหรับการทดลองอย่างปลอดภัย และด้วย Linux RDP แบบคลิกเดียว คุณยังได้ desktop session ด้วย เพื่อให้สามารถทดลองลบไฟล์ผ่าน GUI แบบเต็มรูปแบบได้เลย

 

คำถามที่พบบ่อย

rm กับ rmdir ต่างกันอย่างไร?

rmdir ลบได้เฉพาะไดเรกทอรีที่ว่างเปล่า และลบไดเรกทอรีแม่ที่กลายเป็นว่างได้ด้วย option -p ส่วน rm ลบได้ทั้งไฟล์และไดเรกทอรี ใช้ -r สำหรับการลบแบบ recursive และ -I หรือ -i เพื่อให้ระบบถามก่อนลบ

จะลบโฟลเดอร์พร้อมทุกอย่างข้างในอย่างถาวรได้อย่างไร?

ใช้ rm -rf DIR หลังจากตรวจสอบ path ให้แน่ใจก่อน เพิ่ม -v ถ้าต้องการดู log ทีละบรรทัด ผู้ดูแลระบบบางคนยังนิยมรันทดสอบด้วย rm -I -r ก่อนรันจริงด้วย

จะลบเฉพาะเนื้อหาข้างใน โดยไม่ลบไดเรกทอรีหลักได้อย่างไร?

ใช้คำสั่ง find DIR -mindepth 1 -delete วิธีนี้จะล้างข้อมูลภายในไดเรกทอรีบน Linux และยังเก็บไดเรกทอรีแม่ไว้ให้ service ต่าง ๆ ใช้งานได้

ทำไม rmdir ถึงบอกว่า “Directory not empty” เมื่อมองไม่เห็นไฟล์

ยังมีไฟล์ซ่อนอยู่ ใช้ ls -A เพื่อแสดงไฟล์เหล่านั้น แล้วจึงใช้คำสั่ง find -mindepth 1 -delete

วิธีแก้ปัญหา “Operation not permitted” หรือ “Permission denied”

ตรวจสอบ immutable bit ด้วย lsattr -d DIR แล้วลบออกด้วย sudo chattr -i DIR ถ้าพบว่ามีการตั้งค่าไว้ นอกจากนี้ให้ตรวจสอบว่า mount ไม่ได้อยู่ในโหมด read-only หาก service สร้าง path ขึ้นมาใหม่ระหว่างการลบ ให้แก้ปัญหาที่ unit นั้นก่อน โดยดูส่วน systemctl ที่ลิงก์ไว้ด้านบน

Share

บทความเพิ่มเติมจากบล็อก

อ่านต่อ

Best Self-Hosted Apps You Can Run with Cosmos Cloud cover image with app panels around a Cosmos dashboard.
Server และ OS

แอป Self-Hosted ที่ดีที่สุดที่คุณรันได้บน Cosmos Cloud: ไฟล์ สื่อ รหัสผ่าน ระบบอัตโนมัติ และอื่นๆ!

Maybe you’ve set up Cosmos Cloud and now want to see what apps match well with it, or maybe you haven’t even decided on Cosmos yet and just want to see how well it fits your workfl

Nick SilverNick Silver 16 นาทีในการอ่าน

พร้อมติดตั้งหรือยัง? เริ่มต้น $2.48/เดือน

คลาวด์อิสระ ตั้งแต่ปี 2008 AMD EPYC, NVMe, 40 Gbps คืนเงินภายใน 14 วัน