Lister fichiers commencant par et finissant p

Résolu
djmic Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   -  
djmic Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

j'ai un petit soucis avec un listage de fichiers à faire à l'aide d'un script.


j'ai un script, il reçoit en paramètre 1 fichier dont l'extension est conf et 1 répertoire dans lequel il doit être sauvegardé.

le but du script est donc de sauvegardé le fichier .conf dans le répertoire fournit en paramètre, mais doit les renommer de telle sorte qu'il n'y ait pas d'écrasement de fichier.

exemple: je veux sauver les fichier named.conf dans le répertoires saves.
la première sauvegarde doit être nommée named1.conf, la second named2.conf, ....

mais pour celà je dois compter le nombre de sauvegardes du fichier pour pouvoir trouver le nombre suivant à donner.

j'ai essayer ceci (sans compter mais juste retourner les enregistrements)

# $1 est le fichier
#$2 est le répertoire

find $2 -maxdepth 1 -type f | grep -e '${1%.conf}[0-9]+\.conf' | gawk '{print $1}'



j'ai donc dans mon répertoire de travail mon script exo.sh , un fichier moi.conf, et un répertoire à l'intérieur duquel il existe les fichiers moi1.conf et moi11.conf.


avec l'appel suivant, je n'ai rien qui s'affiche, pourtant ca m'a l'air correct.

./exo.sh moi.conf saves



Si quelqu'un pouvait m'avancer, je le remercie d'avance.
A voir également:

6 réponses

Urielxx Messages postés 190 Date d'inscription   Statut Membre Dernière intervention   46
 
J'aurais du préciser : '*' signifie zero fois ou plus. Donc en groupant [0-9][0-9]*, ça correspond à un chiffre, suivi de 'zero ou plus' chiffre. Ca revient à faire un [0-9]+, mais j'ai déjà eu des comportements bizarres du grep par le passé avec des "+" qui ne fonctionnaients pas.

Ta question est résolue à présent ;)
1
djmic Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   1
 
Je te remercie Urielxx
1
Urielxx Messages postés 190 Date d'inscription   Statut Membre Dernière intervention   46
 
L'erreur est dans ton grep, qui ne renvoie rien :
grep -e '${1%.conf}[0-9]+\.conf'

Pourquoi ? Parce que le '${1%.conf}' n'est pas interprété car il est entre quotes simples [']. Essaie avec des doubles-quotes ["] plutôt, ces dernières permettent l'interprétation des variables :

grep -e "${1%.conf}[0-9]+\.conf"

Ca devrait aller mieux.
0
Urielxx Messages postés 190 Date d'inscription   Statut Membre Dernière intervention   46
 
J'ai déjà eu du mal avec le "+" dans les grep...

Essaie ça pour voir :
grep -e "${1%.conf}[0-9][0-9]*\.conf"

Et marque le post en résolu si ça fonctionne (j'y crois ;) )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
djmic Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   1
 
bizarre ca fonctionne.

Que signifie le * ? une ou plusieurs fois aussi?
0
djmic Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour Urielxx

il ne me retourne toujours rien. Pourtant le find me retourne bien moi1.conf et moi11.conf.
Sans doute encore une erreur dans mon grep car lorsque j'enlève le + il m'affiche bien moi1.conf mais pas moi11.conf.

le + dans les regex ne signifie pas une fois ou plusieurs fois?

merci
-1