#26 Le 09/08/2017, à 19:29
- senoyo
Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch
Senoyo,
t’as besoin d’apprendre les bases de bash avant tout j’ai l’impression…
Les sources fiables (la première est accessible, la seconde pour les approfondissements) :
http://mywiki.wooledge.org/BashGuide
http://wiki.bash-hackers.org/et pour vérifier ton code :
Merci pour ces liens, mais je viens de Windows en Français (depuis 3.1 car MsDos était bien compliqué pour moi), ça me fait un choc ce passage à Ubuntu. Déjà que j'ai galéré à en arriver là depuis plusieurs jours...
Ça, c'est déjà pas mal ;-) https://doc.ubuntu-fr.org/tutoriel/script_shell
Dernière modification par senoyo (Le 09/08/2017, à 19:38)
Hors ligne
#27 Le 09/08/2017, à 20:08
- Watael
Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch
et si, dans ta boucle, tu fais précéder ta commande d'un echo "$b" ?
ça correspond aux noms des fichiers du message d'erreur ?
on peut ajouter un test :
for f in *.jpg *.png
do
echo -n "$repStyl/$b"
test -f "$repStyl/$b" && echo " OK" || echo KO # et ainsi de suite pour tous les fichiers utilisés.
done
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#28 Le 09/08/2017, à 20:11
- senoyo
Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch
Le problème provient du chemin.
for b in $HOME/img/styl/*.jpg *.png *.JPG *.PNG;
do
time th neural_style.lua \
-content_weight 10 -style_scale 1 -style_weight 1000 \
-content_image $HOME/img/cont/p01.jpg -style_image "$b" -output_image $HOME/img/s101_"$b".png \
-init image -gpu 0 -backend cudnn -normalize_gradients -print_iter 10 -save_iter 0 -num_iterations 10 -image_size 80 ;
done
Il faudrait maintenant changer le nom de sortie "output" pour ne garder que le nom du fichier, sans son chemin et sans son extension.
Hors ligne
#29 Le 09/08/2017, à 20:54
- Watael
Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch
un pas en avant, un pas en arrière.
on n'avance pas.
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#30 Le 09/08/2017, à 20:55
- senoyo
Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch
Je n'y arrive pas.
Sinon, comment écrire qu'il faut chercher les fichiers "*.jpg..." dans le dossier "$HOME/img/styl/" sans que b soit le chemin et le fichier en même temps ?
Hors ligne
#31 Le 09/08/2017, à 21:05
- senoyo
Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch
la commande est lancée dans le dossier neural-style:
cd ~/neural-style
Les fichiers source sont dans
~/img/styl/
Voilà le problème.
Dernière modification par senoyo (Le 09/08/2017, à 21:06)
Hors ligne
#32 Le 09/08/2017, à 21:12
- Watael
Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch
comme tu l'as fait précédemment (ou presque) :
content_rep="$HOME/img/styl"
cd /je/ne/sais/pas/où_sont_tes_images/ # pour faire simple.
for f in *.{jpg,png} # f comme fichier, parce que b comme bichier, ça marche pas. !o!
do
test -f "$content_rep/$f" && echo "$content_rep/$f existe :)" || echo "$content_rep/$f n'existe pas :("
done
Dernière modification par Watael (Le 09/08/2017, à 21:12)
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#33 Le 09/08/2017, à 21:20
- Hizoka
Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch
Sinon, comment écrire qu'il faut chercher les fichiers "*.jpg..." dans le dossier "$HOME/img/styl/" sans que b soit le chemin et le fichier en même temps ?
...
Il faudrait maintenant changer le nom de sortie "output" pour ne garder que le nom du fichier, sans son chemin et sans son extension.
Juste pour info en coup de vent :
adresse="/home/hizoka/Fichier.ext"
nom="${adresse##*/}"
nomsansext="${nom%.*}"
dossier="${adresse%/*}"
ext="${adresse##*.}"
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#34 Le 09/08/2017, à 21:30
- Watael
Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch
j'y serai arrivé, un peu plus tard.
j'essayais de rester simple, d'avancer un pas à la fois, sans effrayer notre ami qui vient de W$.
là, je viens de l'entendre du fond de ses 36ème dessous : « WTF ? »
Dernière modification par Watael (Le 09/08/2017, à 21:31)
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#35 Le 09/08/2017, à 22:00
- senoyo
Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch
Merci Hizoka, c'est vrai que je commence à avoir la tête qui fume...:o:rolleyes:
for f in $HOME/img/styl/*.jpg *.png *.JPG *.PNG;
do
time th neural_style.lua \
-content_weight 10 -style_scale 1 -style_weight 1000 \
-content_image $HOME/img/cont/p01.jpg -style_image "$f" -output_image $HOME/img/s101_"${f%.*}".png \
-init image -gpu 0 -backend cudnn -normalize_gradients -print_iter 10 -save_iter 0 -num_iterations 10 -image_size 80 ;
done
"${f%.*}".png
for f in $HOME/img/styl/*.jpg *.png *.JPG *.PNG;
do
time th neural_style.lua \
-content_weight 10 -style_scale 1 -style_weight 1000 \
-content_image $HOME/img/cont/p01.jpg -style_image "$f" -output_image $HOME/img/s101_"$($f .${f##*.})".png \
-init image -gpu 0 -backend cudnn -normalize_gradients -print_iter 10 -save_iter 0 -num_iterations 10 -image_size 80 ;
done
"$($f .${f##*.})".png
Ca ne fonctionne pas non plus...
Hors ligne
#36 Le 09/08/2017, à 22:29
- senoyo
Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch
content_rep="$HOME/img/styl"
cd ~/neural-style
for f in *.{jpg,png}
do
test -f "$content_rep/$f" && echo || echo "$content_rep/$f
done
Je ne comprend pas ce que tu veux me dire...
Hors ligne
#37 Le 09/08/2017, à 22:46
- Sub0
Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch
@senoyo : si tu ne prends pas le temps d’apprendre les bases de la syntaxe de bash, tu n’es pas prêt de retrouver une température neuronale normale ^^
Il ne te manque que les principes de base pour arriver à ce que tu veux. Mais personne ne pourra les apprendre à ta place.
Le risque, c’est que tu te décourages à ne pas prendre ce temps, nécessaire et gratifiant.
Les japonais disent : « si tu es pressé, fais un détour ».
Ça marche particulièrement bien ici
Mes 2 centimes…
Seule alternative au bépo acceptée = stylo/papier.
Hors ligne
#38 Le 09/08/2017, à 22:50
- Watael
Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch
Je ne comprend pas ce que tu veux me dire...
j'essaie de faire en sorte que tu saches retrouver tes fichiers.
Ca ne fonctionne pas non plus...
normal, tu fais n'importe quoi.
Il [...] te manque [...] les principes de base pour arriver à ce que tu veux.
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#39 Le 09/08/2017, à 23:00
- senoyo
Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch
@senoyo : si tu ne prends pas le temps d’apprendre les bases de la syntaxe de bash, tu n’es pas prêt de retrouver une température neuronale normale ^^
Sauf que j'ai installé Ubuntu pour tester ce système d'image. Je demandais juste si quelqu'un pouvais m'aider à trouver une solution à mon questionnement. Je ne vais pas devenir programmeur ou autre, je ne vais pas me mettre à apprendre ce langage alors que je devrais déjà me remettre à l'anglais... J'ai déjà passé plus de temps a chercher que le temps que j'aurais mis à tout taper sans batch...
Je trouve ça dejà courageux de ma part et j'y ai mis énergie et temps.
Je trouve ça intéressant mais je ne suis vraiment pas fait pour ça.
C'est dommage quand même car on est proche de la solution.
.
Hors ligne
#40 Le 09/08/2017, à 23:07
- senoyo
Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch
Dans tout les cas, je te remercie car j'ai quand même compris quelques grands principes grâce à tes explications au lieu de me donner directement une solution, mais là je suis bien fatigué...
Hors ligne
#41 Le 09/08/2017, à 23:21
- Sub0
Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch
@senoyo : si tu ne prends pas le temps d’apprendre les bases de la syntaxe de bash, tu n’es pas prêt de retrouver une température neuronale normale ^^
Sauf que j'ai installé Ubuntu pour tester ce système d'image. Je demandais juste si quelqu'un pouvais m'aider à trouver une solution à mon questionnement. Je ne vais pas devenir programmeur ou autre, je ne vais pas me mettre à apprendre ce langage alors que je devrais déjà me remettre à l'anglais... J'ai déjà passé plus de temps a chercher que le temps que j'aurais mis à tout taper sans batch...
Je trouve ça dejà courageux de ma part et j'y ai mis énergie et temps.Je trouve ça intéressant mais je ne suis vraiment pas fait pour ça.
C'est dommage quand même car on est proche de la solution.
On a tous nos raisons
La solution t’as été donnée. Elle ne manque pas, il te manque juste de quoi l’appliquer.
Il ne s’agit pas d’apprendre à programmer, mais de se débrouiller un peu avec les bases de l’environnement GNU/Linux (dont on peut se passer, souvent, mais pas toujours - ou pour certains, comme beaucoup ici, pour rien au monde ^^)
Il n’y avait pas de mauvais ton dans ce que je te disais, faut pas le prendre mal, juste un conseil (on a tous débuté) bienveillant, pour éviter d’en arriver à :
là je suis bien fatigué...
Plus un appel à souffler un coup en lisant tranquillement, plutôt qu’à t’acharner. Souvent, un petit détour vers un truc simple, et la solution arrive toute seule !
Des trucs simples : utilser « * », comprendre l’arborescence des fichier, « . », « .. », etc. Tu sais visiblement faire une boucle et deux-trois trucs. Ce que tu as a apprendre présentement est plus simple encore. Avec le temps que t’as passé à t’acharner, t’aurais eu ce qu’il fallait. Vraiment !
Alors, n’abandonne pas, mais prends ton temps (à moins que tu ais une nécessité pressante de faire ce que tu souhaites faire, là c’est un peu différent).
Avec un tout petit peu de patience, en prenant les choses par étape, tu y arriveras sans aucune difficulté (t’es pas loin), et c’est gratifiant.
Personne a un petit tuto fiable en français pour débutant ?
(Et profite de ton excurssion linuxienne et de ta « bonne raison » pour y rester )
Dernière modification par Sub0 (Le 09/08/2017, à 23:27)
Seule alternative au bépo acceptée = stylo/papier.
Hors ligne
#42 Le 10/08/2017, à 00:04
- senoyo
Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch
On s'approche...
for f in $HOME/img/styl/*.{jpg,png}
do
cd ~/neural-style
time th neural_style.lua \
-content_weight 10 -style_scale 1 -style_weight 1000 \
-content_image $HOME/img/cont/p01.jpg -style_image "$f" -output_image $HOME/img/"${f##*/}".png \
-init image -gpu 0 -backend cudnn -normalize_gradients -print_iter 10 -save_iter 0 -num_iterations 10 -image_size 80 ;
done;
cd
Ca me donne des fichiers: monfichier.jpg.png car j'utilise
"${f##*/}"
Pourquoi avec :
"${f%.*}"
ça ne fonctionne pas ?
Hors ligne
#43 Le 10/08/2017, à 00:55
- Watael
Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch
ça donne "monfichier.png.png" parce que tu ajoutes ".png" après "${f##*/}" !
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#44 Le 10/08/2017, à 08:04
- Hizoka
Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch
On recommence :
adresse="/home/hizoka/Fichier.ext"
nom="${adresse##*/}"
nomsansext="${nom%.*}" # Se fait en 2 étapes ! D'abord on récupère le nom avec extension puis on dégage l'extension.
dossier="${adresse%/*}"
ext="${adresse##*.}"
echo "${nom}" # renvoie Fichier.ext
echo "${nomsansext}" # Renvoie Fichier
echo "${ext}" # renvoie ext
echo "${dossier}" # Renvoie /home/hizoka
"$($f .${f##*.})".png
Quand tu fais ce genre de test ne le dis pas
Pour les bases en français même si Watael est pas fan : http://abs.traduc.org/abs-fr
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#45 Le 10/08/2017, à 12:06
- senoyo
Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch
Pour les bases en français même si Watael est pas fan wink : http://abs.traduc.org/abs-fr
Super, c'est trés complet et en français :-)
Voilà, ça ça fonctionne :
for f in $HOME/img/styl/*.{jpg,png}
do
cd ~/neural-style
n="${f##*/}"; s="${n%.*}"
time th neural_style.lua \
-content_weight 10 -style_scale 1 -style_weight 1000 \
-content_image $HOME/img/cont/p01.jpg -style_image "$f" -output_image $HOME/img/"$s".png \
-init image -gpu 0 -backend cudnn -normalize_gradients -print_iter 10 -save_iter 0 -num_iterations 10 -image_size 80 ;
done;
cd
Est-ce que l’écriture est correcte ?
.
Dernière modification par senoyo (Le 10/08/2017, à 12:53)
Hors ligne
#46 Le 10/08/2017, à 13:51
- senoyo
Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch
FINI ! :-)
tableau=( '1: 10 1.2 1000'
'2: 100 1 500'
'3: 100 2 1000000' )
for f1 in $HOME/img/cont/*.{jpg,png}
do
for f2 in $HOME/img/styl/*.{jpg,png}
do
for i in "${tableau[@]}"
do
cd ~/neural-style
read numLigne val1 val2 val3 <<<"$i"
n1="${f1##*/}"; s1="${n1%.*}"
n2="${f2##*/}"; s2="${n2%.*}"
time th neural_style.lua \
-content_weight "$val1" -style_scale "$val2" -style_weight "$val3" \
-content_image "$f1" -style_image "$f2" -output_image $HOME/img/"$s1"-"$s2"_$val1-$val2-$val3.png \
-init image -gpu 0 -backend cudnn -normalize_gradients -print_iter 10 -save_iter 0 -num_iterations 10 -image_size 80 ;
done;
done;
done;
cd
-
MERCI beaucoup à Watael ainsi qu'à Sub0 et Hizoka ! :-)
.
-
Hors ligne
#47 Le 10/08/2017, à 15:53
- Hizoka
Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch
De rien
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne