[shell script] repertoires numerotés

Bonjour,
Pour contourner un bug logiciel, j'aimerais pouvoir supprimer automatiquement certains répertoires qui sont de la forme 'tirages_xxxx' avec xxxx variant de 0001 à 9999.
Pas bien à l'aise en script shell, j'ai ecrit sous cygwin, à l'aide du net, le script suivant :
--------------------
# fichier suprep.sh
# syntaxe: suprep.sh indice1 indice2
# ex: suprep.sh 2 158 pour effacer les répertoires de 'tirages_002' jusqu'à 'tirages_0158'
#!/bin/sh
PATH=.:/usr/bin:${PATH}
...
find . -depth -type d -name "tirages_0*[${1}-${2}]" -exec rm -rf {} \;
--------------------
Explication:
tirages_0* pour constriure le repertoire tirages_0 ou tirages_00 ou tirages_000...
[${1}-${2}] pour avoir une valeur comprise entre ${1} et ${2}

Mon problème c'est que cela ne fonctionne que pour les répertoire entre 0001 et 0009 ! je pense que mon expression régulière n'est pas bonne, est-ce que quelqu'un à une idée ?

Merci d'avance et bonnes vacances.
aVr
Configuration: Windows XP
Firefox 2.0.0.16

5 réponses

  1. pourquoi fait tu une recherche de repertoire?

    un pauv'

    pour i de $depart a $fin fait
    rm -rf tonfichier.0$i
    finpour

    non, ou je me trompe???
    1. Contributeur
      hello
      et comme ça

      find . -depth -type d -name "tirages_0`seq 2 158 | printf '%03d'`" -ls

      -ls pour essayer
      1. Contributeur
        plus simple
        find . -depth -type d -name "tirages_0`seq -f '%03d' 2 158`" -ls
        1. Bonjour à tous et merci pour votre aide.
          J'ai bossé sur ce script cet après-midi.
          En fait, j'ai mixer les deux solutions pour avoir le script suivant:

          #!/bin/bash
          # param1 = repertoire ou supprimer les repertoires tirages
          # param2 = indice de debut
          # param3 = indice de fin
          PATH=.:/usr/bin:${PATH}
          for i in $(seq -f '%04.0f' ${2} ${3})
          do
          find ${1} -depth -type d -name "tirage_$i" -exec rm -rf {} \;
          done

          Je n'ai pas réussi à faire une seule ligne en incluant la commande "seq" dans le "find" comme dans la solution de dubcek. Il y a certainement plus simple mais celui-ci fonctionne sous cygwin (et je le comprend...).
          Pour répondre à linuxnico, je fais la recherche de répertoire car je ne sais pas ou seront les repertoires "tirages_xxxx" à détruire, je connais juste le repertoire destination. De plus, je souhaitais automatiser cette suppression.
          Encore merci,
          aVr
          1. Contributeur
            et comme ça, pour n'exécuter qu'une fois la commande find
            LISTE=$(seq -f 'tirage_%04.0f' ${2} ${3})
            find ${1} -depth -type d -name "$LISTE" -exec rm -rf {} \;