[shell script] repertoires numerotés
aVr69
Messages postés
2
Statut
Membre
-
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
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
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
A voir également:
- [shell script] repertoires numerotés
- Classic shell - Télécharger - Personnalisation
- Script vidéo youtube - Guide
- Ghost script - Télécharger - Polices de caractères
- Mas script - Accueil - Windows
- Script cmd - Guide
5 réponses
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???
un pauv'
pour i de $depart a $fin fait
rm -rf tonfichier.0$i
finpour
non, ou je me trompe???
hello
et comme ça
-ls pour essayer
et comme ça
find . -depth -type d -name "tirages_0`seq 2 158 | printf '%03d'`" -ls
-ls pour essayer
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question