[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. 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 {} \;
    
    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
        plus simple
        find . -depth -type d -name "tirages_0`seq -f '%03d' 2 158`" -ls
        1. Contributeur
          hello
          et comme ça

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

          -ls pour essayer
          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???