Làm thế nào để loại bỏ tất cả các thư mục con? (tập lệnh unix shell)
Tôi có một thư mục tên là "cdrs-roaming". Mỗi ngày, tôi nhận được một hoặc nhiều tệp .zip và giải nén chúng bằng cách này:
#!/bin/bash
for i in *.zip
do
j=${i//\.zip/} mkdir $j
cd $j unzip ../$i
cd -
done
Sau đó, tôi có ví dụ: "example1.zip" và "example1"; "example2.zip" và "example2"
Tôi đang xóa tất cả các tệp zip (trong trường hợp này là: "example1.zip" và "example2.zip") bằng tệp này:
#! /bin/bash
find /dados/cdrs-roaming/*.zip -mtime +1 -exec rm {} \;
Vì vậy, tôi muốn xóa các thư mục (hoặc các thư mục - tôi thực sự không biết sự khác biệt) "example1" và "example2". Tôi đã thử cái này:
#! /bin/bash
find /dados/cdrs-roaming/ -type d -mtime +1 -exec rm -rf {} \;
Nhưng nó cũng loại bỏ "cdrs-roaming". Tôi cũng đã cố gắng sử dụng:
find /cdrs-roaming/ -type d -mtime +1 -exec rm -rf {} \;
Nhưng nó trả về: find: '/ cdrs-roaming /': Không có tệp hoặc thư mục nào như vậy
Bất kỳ ý tưởng để làm điều này? Tôi chỉ cần xóa các thư mục trong "cdrs-roaming" nhưng tôi không thể xóa bất kỳ thứ gì khác bên trong nó (các tệp .sh của tôi nằm trong đó)
Trả lời
Vì bạn đang sử dụng bash, vậy còn
rm -rf /dados/cdrs-roaming/*/
Dấu gạch chéo cuối cùng đảm bảo rằng bash chỉ mở rộng mẫu sang các thư mục.
Sử dụng -mindepth 1
tùy chọn:
find /dados/cdrs-roaming/ -mindepth 1 -type d -mtime +1 -exec rm -rf {} \;