Noms des fichiers de sortie automatiques

Résolu/Fermé
keng Messages postés 13 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 9 juillet 2008 - 26 sept. 2007 à 11:25
keng Messages postés 13 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 9 juillet 2008 - 27 sept. 2007 à 11:58
Bonjour,

j'ai un programme qui s'appelle comme ça :
"prog fichier_entre.m fichier_sortie.c"

j'ai beaucop de fichier .m dans un répertoire
donc je voudrais faire quelque chose comme "prog *.m ????.c"
mais je ne sais plus comment faire pour que les fichiers de sortie aient le meme nom que les fichiers d'entrée avec juste l'extension qui change

comment faire SVP ?
merci

a+
A voir également:

6 réponses

keng Messages postés 13 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 9 juillet 2008 1
26 sept. 2007 à 11:42
merci
mais ce genre de solution, en passant par des variables du shell, oblige à faire un script
il n'y a pas de commande toute simple ?
+
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
26 sept. 2007 à 11:50
Et le programme que tu appelles il est écrit en quoi ?
Tu peux pas y rajouter une ligne de code ?
0
asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 426
26 sept. 2007 à 16:02
Bonjour,
[prompt]$ for fic in *.m; do
>     prog $fici ${fic/.m/.c}
> done;
prog a.m a.c
prog b.m b.c
etc.
Ce n'est pas suffisant dans ton cas ? tu tapes ça directement, pour chaque fichier "*.c" dans le repertoire courant, il va invoquer le programe voulu... pas de script...

Si ce n'est pas ce que tu cherche, il faudra plus de précision dans ta question...

@+
0
keng Messages postés 13 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 9 juillet 2008 1
27 sept. 2007 à 10:09
ça serait très bien sauf que ça ne marche pas

j'ai essayé
for fic in *.m; do echo $fic done ;

et ça ne marche pas non plus

il y a quelque chose qui cloche dans la syntaxe ?

++
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
27 sept. 2007 à 10:36
il y a quelque chose qui cloche dans la syntaxe ?
Oui, il manque un point virgule entre "$fich" et "done" :
 for fic in *.m ; do echo $fic ; done ; 
;-))
0

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

Posez votre question
keng Messages postés 13 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 9 juillet 2008 1
27 sept. 2007 à 11:58
il suffisait de faire ça :

for fic in *.m; do ./mtoc $fic DOC/${fic/\.m/\.c}; done;

merci à tous
a+
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
26 sept. 2007 à 11:32
Salut,

Je sais si j'ai tout bien compris, mais voilà un petit truc :
[tmpfs]$ set mon_prog.m

[tmpfs]$ echo $1

mon_prog.m

[tmpfs]$ echo ${1/\.m/\.c}

mon_prog.c

[tmpfs]$ 
;-))
-1
oh! élégant!

j'étais content de mon ls -1|sed -n "s#^\([^.]*\)\.$1#mv `pwd`/& `pwd`/\1.$2#gp"|sh mais j'ai l'impression d'être un grobourrin maintenant :)
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894 > oeuf
26 sept. 2007 à 15:42
j'ai l'impression d'être un grobourrin maintenant
T'as pris des cours avec le fruit ? ;-DDD

PS. Protéger le point n'est pas nécessaire, un simple "echo ${1/.m/.c}" aurait suffit ;-))
0