Noms des fichiers de sortie automatiques

Résolu
keng Messages postés 13 Statut Membre -  
keng Messages postés 13 Statut Membre -
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+
Configuration: Linux Fedora
Firefox 1.5.0.7

6 réponses

  1. keng Messages postés 13 Statut Membre 1
     
    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
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Et le programme que tu appelles il est écrit en quoi ?
    Tu peux pas y rajouter une ligne de code ?
    0
  3. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
     
    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
  4. keng Messages postés 13 Statut Membre 1
     
    ç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
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. keng Messages postés 13 Statut Membre 1
     
    il suffisait de faire ça :

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

    merci à tous
    a+
    0
  7. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
    1. oeuf
       
      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
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > oeuf
         
        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