ฉันต้องการลบไดเรกทอรีทั้งหมดจาก pwd แต่ทิ้งไฟล์ไว้ใน pwd เพียงอย่างเดียว หากเนื้อหาของ pwd ของฉันคือ:
mydir1
mydir2
myfile1
myfile2
ถ้าอย่างนั้นฉันก็อยากจะเหลืออยู่
myfile1
myfile2
ฉันคิดว่าฉันต้องใช้ rm -r -i
ฉันถูกไหม?
ฉันต้องการลบไดเรกทอรีทั้งหมดจาก pwd แต่ทิ้งไฟล์ไว้ใน pwd เพียงอย่างเดียว หากเนื้อหาของ pwd ของฉันคือ:
mydir1
mydir2
myfile1
myfile2
ถ้าอย่างนั้นฉันก็อยากจะเหลืออยู่
myfile1
myfile2
ฉันคิดว่าฉันต้องใช้ rm -r -i
ฉันถูกไหม?
คำตอบ:
ไม่ว่าจะให้ "ตัวถูกดำเนินการหายไป" เนื่องจากคุณไม่ได้ระบุอะไรเลย การใส่*
จะแจ้งให้ไฟล์
ฉันจะลองทำ:
find -mindepth 1 -maxdepth 1 -type d -exec rm -r {} \;
mindepth 1
จะยกเว้น.
จากผลการที่maxdepth 1
จะไม่รวมการพยายามที่จะทำภายใต้ไดเรกทอรีที่จะอยู่แล้วได้รับการลบ (จึงสร้างคำเตือน) แต่ในทางปฏิบัติคุณสามารถปล่อยให้พวกเขาทั้งคู่ออกมาถ้าคุณเห็นด้วยกับคำเตือนที่ "ไร้เดียงสา"
ฉันพบสิ่งนี้ที่ใดที่หนึ่ง:
rm -r */
ดูเหมือนว่าวิธีที่ง่ายที่สุดที่จะไป ด้วยตัวอย่างของคุณคุณจะต้องยืนยันแต่ละกรณีหากคุณมี 5 ไฟล์มันก็โอเค แต่ด้วยโครงสร้างไฟล์ที่ใหญ่กว่าโหมดการโต้ตอบไม่ใช่วิธีที่จะไป ... เช่นเดียวกับข้อเสนอแนะถ้าเป็นข้อมูลที่สำคัญ สำรอง ...
ใช้
rm -rf ./*/
ที่หลีกเลี่ยงโหมดการโต้ตอบและลบไดเรกทอรีในไดเรกทอรีท้องถิ่นของคุณเท่านั้น
สิ่งนี้ควรใช้งานได้:
find /path -type d -exec rm -rf '{}' \;
-type d ค้นหาไดเรกทอรีเท่านั้น
you can also try in this way to delete only all folders not files from any location in linux.
#delete only all dir and don't touch files
#!/bin/bash
for dir in `ls -l | grep ^d | awk '{print $9}'`
do
echo "going to delete $dir " `rm -rf $dir`
done
ls