Garder le nom et modifier une extension dans une boucle
RésoluLOLplz -
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
Le fil porte sur l’exécution d’un script Bash pour traiter plusieurs fichiers log dans un répertoire et sauvegarder les résultats sous le même nom avec l’extension changée en .html. Les échanges précisent d’employer une boucle for sur les logs, puis de rediriger la sortie du script pgfouine.php vers des fichiers dans le répertoire statistiqueTab, en conservant le nom mais en .html. Plusieurs réponses soulignent des pièges courants, notamment l’absence de séparateur entre le chemin et le fichier, l’usage de variables sans quoting et la construction incorrecte du chemin de destination. Des conseils préconisent d’utiliser for f in "$dossier"/*.log, puis d’écrire les fichiers .html dans "$statTab"/"$(basename "$f" .log).html" afin de préserver le nom sans modifier l’emplacement, et d’assurer que les répertoires existent.
-
Salut,
$ var=/chemin/rep/fichier.log $ echo ${var} /chemin/rep/fichier.log $ echo ${var%.*}.html /chemin/rep/fichier.html
-
-
-
-
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 -
-
-
salut,
for f in $dossier/*.log do echo "monScript $f > ${f%.*}.html" donevoir man bash /Remplacement des paramètres -
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-
-
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 -
La même chose qu'en #12 ;-(
-
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 -
-