ลบเนื้อหาของไดเรกทอรีใน Centos อย่างไร


9

ฉันต้องการลบเนื้อหาทั้งหมดของโฟลเดอร์ใน CentOS แต่ไม่ใช่โฟลเดอร์นั้น

ตัวอย่างเช่น: ฉันมีโฟลเดอร์ชื่อ "MYFOLDER" ซึ่งมีโฟลเดอร์ย่อย FOLD_1, FOLD_2, FOLD_3, FOLD_4 ... ฯลฯ และบางไฟล์ ฉันต้องลบโฟลเดอร์และไฟล์เหล่านี้ทั้งหมด แต่ไม่ใช่โฟลเดอร์คอนเทนเนอร์ MYFOLDER ฉันต้องการไดเรกทอรีนี้เพื่อนำผลลัพธ์ของกระบวนการก่อนหน้านี้

ฉันพยายามด้วยrm -rf คำสั่ง แต่นี่จะลบโฟลเดอร์คอนเทนเนอร์ด้วย

คำตอบ:


11

ลบเนื้อหาของโฟลเดอร์แทน

rm -r MYFOLDER/*

1
โปรดทราบว่านี่ไม่ใช่ไฟล์ / ไดเรกทอรีที่ซ่อนอยู่ภายใน MYFOLDER
tylerl

1
@tylerl: ถ้าคุณตั้งค่าไว้shopt -s dotglobก่อน
jgoldschrafe

สิ่งนี้ต้องการให้คุณอนุมัติ y / n จากมากไปน้อยในแต่ละไดเรกทอรีย่อยซึ่งเป็นการเสียเวลาอย่างสมบูรณ์ คำสั่งที่ถูกต้องจะจัดการทุกอย่างโดยอัตโนมัติเพื่อให้คุณไม่ติดกับ 50 พร้อมท์
CodeMed

rm -R /path/to/myfolder/*เป็นไวยากรณ์ที่ถูกต้องเพื่อหลีกเลี่ยงการร้องขอมากเกินไปที่จะอนุมัติการลบทุกไฟล์และโฟลเดอร์ย่อย Rหมายเหตุทุน
CodeMed

5

คุณสามารถใช้ได้:

rm -r MYFOLDER/{.[^.],.??*}

วิธีนี้จะเป็นการลบไฟล์และโฟลเดอร์ที่ซ่อนอยู่ หากคุณมีไฟล์มากเกินไปในไดเรกทอรี MYFOLDER คุณควรรันแทน:

ls MYFOLDER/{.[^.],.??*}|xargs rm -r

ฉันมีมากกว่า 500k ไฟล์ในmeta/ไดเรกทอรีของฉันดังนั้นฉันต้องการลอง xargs ทางเลือก แต่ฉันได้รับข้อความแสดงข้อผิดพลาดเหล่านี้: ls: cannot access meta/.[^.]: No such file or directory ls: cannot access meta/.??*: No such file or directory rm: missing operand
Andres SK

1
ตรวจสอบให้แน่ใจว่าคุณใช้bashเชลล์ เชลล์ต้องรองรับ "Brace Expansion" และ "Regular Expressions" สำหรับรูปแบบไฟล์
Mircea Vutcovici

3

ในความคิดของฉันวิธีที่ง่ายที่สุดคือการลบไดเรกทอรีทั้งหมดรวมถึงตัวมันเองแล้วสร้างโฟลเดอร์ใหม่ มีบางสถานการณ์ที่นี่ไม่ใช่วิธีที่ดี (เช่นสคริปต์ที่ไม่ต้องใส่ข้อมูลหรือท่อส่งที่ซับซ้อนมากขึ้น) แต่คุณไม่ได้ระบุสาเหตุที่คุณไม่ต้องการลบโฟลเดอร์

rm -rf foldername
mkdir foldername

อุ่ย คุณระบุ (ฉันอ่านโพสต์ของคุณอีกครั้ง) ก็ยังสามารถลบและสร้างใหม่ได้ โดยเฉพาะถ้าคุณเชื่อมคำสั่งเข้าด้วยกันอย่างเช่น

rm -rf foldername && mkdir foldername

หรือ

rm -rf foldername; mkdir foldername

บางครั้งคุณไม่ได้รับอนุญาตในโฟลเดอร์พาเรนต์หรือคุณต้องการรักษาคุณลักษณะบางอย่างที่คุณไม่รู้จัก เช่นคุณไม่สามารถลบโฟลเดอร์บ้านของคุณในฐานะผู้ใช้ที่ไม่ใช่รูท แต่คุณสามารถลบอะไรก็ได้ที่อยู่ในนั้น
Mircea Vutcovici

นี่ควรเป็นคำตอบที่ยอมรับได้ +1
CodeMed

0

เกี่ยวกับ

cd MYFOLDER
find . | rm -rf

วิธีนี้จะเป็นการลบไฟล์ที่ซ่อน (ไฟล์ที่ขึ้นต้นด้วยจุด) เช่นกัน


1
นี่จะลบ MYFOLDER ด้วย
Mircea Vutcovici


0

ฉันขอแนะนำทางเลือกนี้ (มันจะลบไฟล์ที่มีช่องว่างในชื่อ):

find MYFOLDER/ -type f -print0 | xargs -0 rm -f
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.