ฉันจะลบทุกสิ่งในไดเรกทอรีรวมถึงไฟล์และไดเรกทอรีที่ซ่อนอยู่ได้อย่างไร
ตอนนี้ฉันใช้สิ่งต่อไปนี้:
rm -rf *
rm -rf .*
rm -rf yourdirectory/*
..
ไดเรกทอรีซึ่งจะลบสิ่งที่อยู่ในไดเรกทอรีดังกล่าวข้างต้น
ฉันจะลบทุกสิ่งในไดเรกทอรีรวมถึงไฟล์และไดเรกทอรีที่ซ่อนอยู่ได้อย่างไร
ตอนนี้ฉันใช้สิ่งต่อไปนี้:
rm -rf *
rm -rf .*
rm -rf yourdirectory/*
..
ไดเรกทอรีซึ่งจะลบสิ่งที่อยู่ในไดเรกทอรีดังกล่าวข้างต้น
คำตอบ:
ง่ายและตรงไปตรงมา:
find -delete
รวมถึงไดเรกทอรีและไฟล์ที่ซ่อนอยู่ อย่างน้อย gnu-find รู้-delete
ของคุณfind
อาจแตกต่างกัน
find /path -delete -mindepth 1
เพื่อหลีกเลี่ยงการลบไดเรกทอรีการใช้งาน
คำตอบที่ดีที่สุดคืออย่าทำอย่างนั้น ลบไดเรกทอรีซ้ำซ้ำแล้วสร้างเป็นไดเรกทอรีว่าง มันน่าเชื่อถือและง่ายขึ้นสำหรับคนอื่นที่จะเข้าใจสิ่งที่คุณกำลังพยายามทำ เมื่อคุณสร้างไดเรกทอรีใหม่อาจมีเจ้าของกลุ่มและสิทธิ์ต่างกัน หากสิ่งเหล่านั้นสำคัญควรระวัง นอกจากนี้หากโปรแกรมใด ๆ ที่ทำงานอยู่มีตัวจัดการไฟล์เปิด (ตัวอธิบาย) ในไดเรกทอรีคุณจะไม่ต้องการลบมัน หากไม่ใช้กรณีพิเศษเหล่านั้นจะเป็นการง่ายกว่าที่จะลบไดเรกทอรีทั้งหมด
rm -rf -- * .[!.]* ..?*
รูปแบบทั้งสามรูปแบบขยายออกไปหากมันไม่ตรงกับสิ่งใด แต่นั่นไม่ใช่ปัญหาที่นี่เนื่องจากเราต้องการจับคู่ทุกอย่างและrm -f
ละเว้นอาร์กิวเมนต์ที่ไม่มีอยู่
โปรดทราบว่าจะตรงกับ.*
..
สมมติว่าทุบตี 4+:
shopt -s dotglob
rm -rf -- *
##or:
rm -rf ./*
ด้วย dotglob เปิดใช้งาน*
ขยายไฟล์และไดเรกทอรีทั้งหมดแม้กระทั่งผู้ที่เริ่มต้นด้วย.
- แต่ไม่ได้ขยายตัวออกไป.
และเพื่อให้มันมีความปลอดภัยที่จะใช้กับ..
rm
หากคุณอยู่ในไดเรกทอรี:
cd .. && rm -rf dir && mkdir dir && cd dir
มิฉะนั้น:
rm -rf /path/to/dir && mkdir /path/to/dir
โอ้ฉัน Zsh
rm -rf (.|)*
อีกครั้งสำหรับ Zsh เท่านั้น
*(D)
(ตัวระบุแบบD
กลมเปิดใช้glob_dots
ตัวเลือกสำหรับรูปแบบนี้)
rm -rf {.,}*
(แตกต่างจากทุบตี, zsh ไม่รวม.
และ..
เป็น{.,}*
อย่างน้อยในเครื่องของฉัน)
find
วิธีการเกี่ยวกับการใช้ ฉันคิดว่านี่เป็นทางเลือกที่ดีเมื่อคุณต้องขุดผ่านไดเรกทอรีย่อย
find . -type f -exec rm {} \;
ลองrm -rf *?*
ดู นี่จะเป็นการลบไฟล์ปกติและไฟล์ที่ซ่อนอยู่
*?*
จะไม่ตรงกับไฟล์ "จุด" / dirs (ยกเว้นว่าคุณได้เปิดใช้งานdotglob
ตัวเลือกในbash , GLOB_DOTS
ตัวเลือกในzshหรือเทียบเท่ากับเชลล์ที่คุณใช้อยู่)
rm -rf .* *
คุณสามารถรวมพวกเขาไป