Lister fichiers commencant par et finissant p

Résolu/Fermé
Messages postés
70
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
9 juillet 2010
-
Messages postés
70
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
9 juillet 2010
-
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.

6 réponses

Messages postés
190
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
25 juin 2013
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 ;)
Messages postés
70
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
9 juillet 2010
1
Je te remercie Urielxx
Messages postés
190
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
25 juin 2013
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.
Messages postés
190
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
25 juin 2013
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 ;) )
Messages postés
70
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
9 juillet 2010
1
bizarre ca fonctionne.

Que signifie le * ? une ou plusieurs fois aussi?
Messages postés
70
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
9 juillet 2010
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