จะลบไดเรกทอรีย่อยทั้งหมดได้อย่างไร? (unix เชลล์สคริปต์)
ฉันมีไดเร็กทอรีชื่อ "cdrs-roaming" ทุกวันฉันได้รับไฟล์. zip อย่างน้อยหนึ่งไฟล์และแตกไฟล์ด้วยสิ่งนี้:
#!/bin/bash
for i in *.zip
do
j=${i//\.zip/} mkdir $j
cd $j unzip ../$i
cd -
done
จากนั้นฉันมีตัวอย่าง: "example1.zip" และ "example1"; "example2.zip" และ "example2"
ฉันกำลังลบไฟล์ zip ทั้งหมด (ในกรณีนี้คือ "example1.zip" และ "example2.zip") ด้วยสิ่งนี้:
#! /bin/bash
find /dados/cdrs-roaming/*.zip -mtime +1 -exec rm {} \;
ดังนั้นฉันต้องการลบไดเร็กทอรี (หรือโฟลเดอร์ - ฉันไม่รู้ความแตกต่างจริงๆ) "example1" และ "example2" ฉันได้ลองสิ่งนี้แล้ว:
#! /bin/bash
find /dados/cdrs-roaming/ -type d -mtime +1 -exec rm -rf {} \;
แต่ยังลบ "cdrs-roaming" ด้วย ฉันยังพยายามใช้:
find /cdrs-roaming/ -type d -mtime +1 -exec rm -rf {} \;
แต่ผลตอบแทน: find: '/ cdrs-roaming /': ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว
มีความคิดที่จะทำสิ่งนี้หรือไม่? ฉันต้องการลบเฉพาะไดเร็กทอรีภายใน "cdrs-roaming" แต่ฉันไม่สามารถลบสิ่งอื่นใดในนั้นได้ (ไฟล์. sh ของฉันอยู่ข้างใน)
คำตอบ
เนื่องจากคุณใช้ bash แล้วล่ะ
rm -rf /dados/cdrs-roaming/*/
เครื่องหมายทับสุดท้ายช่วยให้มั่นใจได้ว่า bash จะขยายรูปแบบไปยังไดเร็กทอรีเท่านั้น
ใช้-mindepth 1
ตัวเลือก:
find /dados/cdrs-roaming/ -mindepth 1 -type d -mtime +1 -exec rm -rf {} \;