Comment supprimer tous les sous-répertoires? (script shell unix)

Jan 15 2021

J'ai un répertoire appelé "cdrs-roaming". Chaque jour, je reçois un ou plusieurs fichiers .zip et je les décompresse avec ceci:

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

Ensuite, j'ai par exemple: "example1.zip" et "example1"; "example2.zip" et "example2"

Je supprime tous les fichiers zip (dans ce cas: "example1.zip" et "example2.zip") avec ceci:

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

Je veux donc supprimer les répertoires (ou dossiers - je ne connais vraiment pas la différence) "exemple1" et "exemple2". J'ai essayé ceci:

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

Mais il supprime également "cdrs-roaming". J'ai également essayé d'utiliser:

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

Mais il renvoie: find: '/ cdrs-roaming /': aucun fichier ou répertoire de ce type

Une idée pour faire ça? Je n'ai besoin de supprimer que les répertoires dans "cdrs-roaming" mais je ne peux rien supprimer d'autre (mes fichiers .sh sont à l'intérieur)

Réponses

2 user1934428 Jan 15 2021 at 15:17

Puisque vous utilisez bash, que diriez-vous

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

La dernière barre oblique garantit que bash étend uniquement le modèle aux répertoires.

1 TimurShtatland Jan 15 2021 at 05:27

Utiliser l' -mindepth 1option:

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