Come rimuovere tutte le sottodirectory? (script di shell unix)

Jan 15 2021

Ho una directory chiamata "cdrs-roaming". Ogni giorno ricevo uno o più file .zip e li decomprimo con questo:

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

Poi ho per esempio: "esempio1.zip" e "esempio1"; "esempio2.zip" e "esempio2"

Sto rimuovendo tutti i file zip (in questo caso: "example1.zip" e "example2.zip") con questo:

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

Quindi voglio rimuovere le directory (o cartelle - davvero non conosco la differenza) "esempio1" e "esempio2". Ho provato questo:

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

Ma rimuove anche "cdrs-roaming". Ho anche provato a usare:

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

Ma restituisce: find: '/ cdrs-roaming /': nessun file o directory di questo tipo

Qualche idea per farlo? Devo eliminare solo le directory all'interno di "cdrs-roaming" ma non posso rimuovere nient'altro al suo interno (i miei file .sh sono al suo interno)

Risposte

2 user1934428 Jan 15 2021 at 15:17

Dato che stai usando bash, che ne dici di

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

La barra finale assicura che bash espanda il modello solo alle directory.

1 TimurShtatland Jan 15 2021 at 05:27

-mindepth 1Opzione di utilizzo :

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