Garder le nom et modifier une extension dans une boucle

Résolu
LOLplz -  
 LOLplz -
Bonjour,
j'ai plusieurs problème dans mon script bash et j'aimerais avoir votre aide.
Je vous explique, je voudrais savoir comment on fait pour exécuter un script sur plusieurs log d'un dossier et rediriger le résultat en gardant le nom mais en modifiant l'extension (de .log à .html).

dossier='/truc/pgfouine-1.1/dl/log/'
script='/truc/pgfouine-1.1'
statTab='/truc/pgfouine-1.1/dl/statistiqueTab'

for log in $dossier
do
$script/pgfouine.php -top 50 -logtype stderr -format html -keepformatting -memorylimit 1073741824 -file $dossier > $statTab/GARDER LE NOM.MODIFIER L'EXENTION
done

3 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    $ var=/chemin/rep/fichier.log
    
    $ echo ${var}
    /chemin/rep/fichier.log
    
    $ echo ${var%.*}.html
    /chemin/rep/fichier.html
    

    0
    1. LOLplz
       
      ./testscript2: line 9: $script/pgfouine.php -top 50 -logtype stderr -format html -keepformatting -memorylimit 1073741824 -file $dossier > ${statTab.*}html: bad substitution
      0
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      De rien ;-(

      Et le "%" t'en a fait quoi ? Ce n'est pas en option !

      Voir message de l'ami qqchquicommenceparQ ci-dessous et les références au man ;-)
      0
    3. LOLplz
       
      Désolé j'ai oublié de te remercié
      c'est vraiment gentil
      0
    4. LOLplz
       
      Quand j'execute le script tout va bien mais il ne me redirige pas le fichier et ne me change pas l'extension

      dossier='/truc/pgfouine-1.1/dl/log/'
      script='/truc/pgfouine-1.1'
      statTab='/truc/pgfouine-1.1/dl/statistiqueTab'


      for dossier in $dossier/*.log
      do
      $script/pgfouine.php -top 50 -logtype stderr -format html -keepformatting -memorylimit 1073741824 -file $dossier > ${statTab%.*}.html
      done
      0
    5. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      $script/pgfouine.php -top 50 -logtype stderr -format html -keepformatting -memorylimit 1073741824 -file $dossier > $statTab/${dossier%.*}.html
      0
  2. Utilisateur anonyme
     
    salut,

    for f in $dossier/*.log
    do echo "monScript $f > ${f%.*}.html"
    done
    voir man bash /Remplacement des paramètres
    0
    1. LOLplz
       
      Merci de ta réponse,
      Le f reprensente quoi dans ton exemple ?
      0
  3. LOLplz
     
    Je sais pas comment initialisé ma boucle.
    Pour faire :
    Pour les logs dans $dossier.
    Parcourir le fichier puis leur executer une commande et renvoyer le resultat du script en gardant le nom mais en changent l' extension (de .log à html).

    #!/bin/bash
    dossier='/Users/truc/pgfouine-1.1/dl/log'
    script='/Users/truc/pgfouine-1.1'
    statTab='/Users/truc/pgfouine-1.1/dl/statistiqueTab'

    i=

    for i in $dossier/*.log
    do
    $script/pgfouine.php -top 50 -logtype stderr -format html -keepformatting -memorylimit 1073741824 -file $dossier${i} > $statTab${i%.*}.html
    done

    Le problème vient surement du i mais je sais pas comment l'utiliser
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Voir réponse #25

      man bash et notamment la commande "set -x".
      0
    2. LOLplz
       
      tu en pense quoi ?

      #!/bin/bash
      dossier='/Users/truc/pgfouine-1.1/dl/log'
      script='/Users/truc/pgfouine-1.1'
      statTab='/Users/truc/pgfouine-1.1/dl/statistiqueTab'

      log='/postgresql-2013-*'

      for log in $dossier/*.log
      do
      $script/pgfouine.php -top 50 -logtype stderr -format html -keepformatting -memorylimit 1073741824 -file $dossier${log} > $statTab${log%.*}.html
      done
      0
    3. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      La même chose qu'en #12 ;-(
      0
    4. LOLplz
       
      J'ai trouvé :

      #!/bin/bash
      dossier='/Users/truc/pgfouine-1.1/dl/log'
      script='/Users/truc/pgfouine-1.1'
      statTab='/Users/axel/Desktop/pgfouine-1.1/dl/statistiqueTab'

      log='postgresql-2013-'
      for log in $dossier/*.log
      do
      $script/pgfouine.php -top 50 -logtype stderr -format html -keepformatting -memorylimit 1073741824 -file $log > ${log%.*}.html
      done

      Le problème venais de log
      0
    5. LOLplz
       
      encore merci de ton aide !
      0