Bagaimana cara menghapus semua subdirektori? (unix shell scripting)

Jan 15 2021

Saya memiliki direktori bernama "cdrs-roaming". Setiap hari saya menerima satu atau lebih file .zip dan mengekstraknya dengan ini:

#!/bin/bash
for i in *.zip
do
    j=${i//\.zip/} mkdir $j
    cd $j unzip ../$i
    cd -
done 

Lalu saya punya contoh: "example1.zip" dan "example1"; "example2.zip" dan "example2"

Saya menghapus semua file zip (dalam hal ini: "example1.zip" dan "example2.zip") dengan ini:

#! /bin/bash
find /dados/cdrs-roaming/*.zip -mtime +1 -exec rm {} \;

Jadi saya ingin menghapus direktori (atau folder - saya benar-benar tidak tahu perbedaannya) "example1" dan "example2". Saya sudah mencoba ini:

#! /bin/bash
find /dados/cdrs-roaming/ -type d -mtime +1 -exec rm -rf {} \;

Tapi itu juga menghapus "cdrs-roaming". Saya juga mencoba menggunakan:

find /cdrs-roaming/ -type d -mtime +1 -exec rm -rf {} \;

Tetapi mengembalikan: find: '/ cdrs-roaming /': Tidak ada file atau direktori seperti itu

Ada ide untuk melakukan ini? Saya hanya perlu menghapus direktori dalam "cdrs-roaming" tetapi saya tidak dapat menghapus apa pun di dalamnya (file .sh saya ada di dalamnya)

Jawaban

2 user1934428 Jan 15 2021 at 15:17

Karena Anda menggunakan bash, bagaimana dengan

rm -rf /dados/cdrs-roaming/*/

Garis miring terakhir memastikan bahwa bash hanya memperluas pola ke direktori.

1 TimurShtatland Jan 15 2021 at 05:27

Gunakan -mindepth 1opsi:

find /dados/cdrs-roaming/ -mindepth 1 -type d -mtime +1 -exec rm -rf {} \;