Scripts marche pour une image mais pas pour 8Go img !

Bonjour,
ces scripts:

[code]#!/bin/bash

Traitement

while [[ -n “$1” ]]; do
if [[ -f “$1” ]]; then
jhead -autorot "$1"
elif [[ -d “$1” ]]; then
#iname – case insensitive
find “$1” -iname “*.jpg” -exec jhead -autorot {} ;
fi
shift
done
zenity --info --title=“Traitement” --text=“Terminé !!!..”[/code]

[code]#!/bin/bash -x
title=“Choisissez la résolution d’image souhaité’“
imgsize=zenity --title "$title" --list --separator=" " --column="size" "160x120" "320x240" "640x480" "800x600" "1024x768" "1920x1080" "1900x1600"
if [ “$?” != 0 ] ; then
exit
fi
#user have to select target size
#imgsize=echo $imgsize | sed 's/ max//g'
imgsize=$ {imgsize/ max/}
if [ ! “$imgsize” ]; then
zenity --error --title=“error” --text=“select a target size"
exit
fi
#To respect proportions
himgsize=$imgsize
#val1=echo "$imgsize" | awk -F'x' '{ print $1 }'
val1=”${imgsize##x*}“
imgsize=”${val1}x${val1}”
############################
echo “$JAUNE”“Les photos du répertoire courant : “$VERT” “$REPERTOIRE_SOURCE” “$NORMAL”, vont être redimenssionnées aux valeurs suivantes :”$VERT” “$imgsize”""$NORMAL"

for I in *
do echo “Redimensionnement de : “$VERT” $I”"$NORMAL"
convert -filter Cubic -resize $imgsize $I $I
done

echo "changement des noms de fichier en cour"
for i in *
do mv $i echo $i | tr [:upper:] [:lower:];done
zenity --info --title=“Traitement” --text=“Terminé !!!..”[/code]

fonctionne à merveille pour quelques images, mais de retour de vacances je me retrouve avec 8Go dans un dossier et là, il ne fonctionne pas.
Quelqu’un pourrait me le débugger ?

Merci.

[PS] En ajoutant -x au shebang je n’ai pas d’infos !!!

Avec autant d’informations, ma boule de cristal ne fonctionne pas vraiment. :mrgreen:

J’en profite pour déplacer vers Programmation, ça y sera plus à sa place.

Avec autant d’informations, ma boule de cristal ne fonctionne pas vraiment. :mrgreen:

J’en profite pour déplacer vers Programmation, ça y sera plus à sa place.[/quote]

Je ne peux rien donner de plus car il ne ce passe rien, malheureusement pour moi, je lance le script et rien … sauf à l’unité !

Après quelques essais, je ne peux selectionnés que !! 6,4Go de données et un Meg de plus :013

Je doute que ça ait quoi que ce soit à voir avec la taille, vu que tu traites tes images une par une. Ça bloque à partir de combien de fichiers ?

Euh y’a un truc qui me gêne là… Qu’est-ce que tu entends précisément par “je n’ai pas d’infos” ? -x doit t’afficher la liste des commandes exécutées, c’est pas des informations ça ?

6.4Go et pas 1Meg de plus …
Mes fichiers je les traitent un à un car je peux pas le faire par lot ! …

Il te demande un nombre de fichier et toi tu lui répond par une taille :033

Si mettre un “set -x” ne te donne rien on peut difficilement t’aider a moins de faire ton boulot en testant de notre coté ton script en debug … :unamused:

PS : Et mettre 4 point d’exclamation à ton titre ne servira qu’a faire fuir de possible participant. :whistle:

C’est sûr que c’est plus simple que de compter le nombre de fichiers…on va dire approximativement 1500 sur 3200 .

Effectivement, mais je n’ai pas plus d’info que RIEN !

Effectivement, mais je n’ai pas plus d’info que RIEN ![/quote]
Vu tes scripts ça devrait au moins afficher les premières lignes qui n’ont strictement rien à voir avec les fichiers traités :

[code]$ cat test
#!/bin/bash -x
echo test
$ ./test

  • echo test
    test[/code]
    Si ça n’affiche rien du tout c’est que tu fais quelque chose de travers, à toi de trouver quoi.

Effectivement, mais je n’ai pas plus d’info que RIEN ![/quote]
Vu tes scripts ça devrait au moins afficher les premières lignes qui n’ont strictement rien à voir avec les fichiers traités :

[code]$ cat test
#!/bin/bash -x
echo test
$ ./test

  • echo test
    test[/code]
    Si ça n’affiche rien du tout c’est que tu fais quelque chose de travers, à toi de trouver quoi.[/quote]

En ligne de commande j’ai ceci à la selection de tous les fichiers :

irena@lagache:~/Images/Photos/2012/CAP-2- NE PAS UTILISER$ sh autorotate.sh autorotate.sh: 11: [[: not found

ca c’est pour le premier script donné +haut.

Essaie avec ça :

[code]#!/bin/bash

Traitement

for fil in “$@” ; do
if [[ -f “${fil}” ]]; then
jhead -autorot "${fil}"
elif [[ -d “${fil}” ]]; then
#iname – case insensitive
find “${file}” -iname “*.jpg” -exec jhead -autorot {} ;
fi
done
zenity --info --title=“Traitement” --text=“Terminé !!!..”[/code]

Tu ne lançais pas le script en ligne de commande et tu t’étonnais qu’il ne t’affiche aucun message ? :119

[quote=“chris38”]irena@lagache:~/Images/Photos/2012/CAP-2- NE PAS UTILISER$ sh autorotate.sh autorotate.sh: 11: [[: not found[/quote]
Bash te renvoie une erreur sur la ligne 11, dans le script que tu nous as donné la ligne 11 c’est “done” qui ne contient aucun [[.
Si tu nous donnais les scripts complets ça aiderait…

Autre chose : quand tu appelles ton script avec sh nomduscript il ignore le shebang, c’est normal. Ton script contient des [[ qui sont spécifiques à Bash, il faut donc soit le lancer avec bash nomduscript, soit le rendre exécutable et le lancer avec /chemin/vers/nomduscript.

[quote=“syam”][quote=“chris38”]irena@lagache:~/Images/Photos/2012/CAP-2- NE PAS UTILISER$ sh autorotate.sh autorotate.sh: 11: [[: not found[/quote]
Bash te renvoie une erreur sur la ligne 11, dans le script que tu nous as donné la ligne 11 c’est “done” qui ne contient aucun [[.
Si tu nous donnais les scripts complets ça aiderait…[/quote]
J’ai imaginé qu’il pointé sur le “done”. Une erreur qu’il trouve sur le while. Mais j’ai pas vérifié avant et comme je n’aime pas le while + shift et préfère le for…in, j’ai foncé peut être un peu vite.

En effet on a déjà eu ce genre de cas. Faudrait peut être éditer un certains nombre d’astuce à vérifier avant de venir chouiner ici (sans que ce soit une règles juste une recommandation).

Tu m’as mis un doute du coup je viens de vérifier : sh indique bien la ligne réelle de l’erreur, le script n’est pas complet.

[quote=“syam”]…
Bash te renvoie une erreur sur la ligne 11, dans le script que tu nous as donné la ligne 11 c’est “done” qui ne contient aucun [[.
Si tu nous donnais les scripts complets ça aiderait…
…[/quote]

Ils sont complets tels quels ! je les utilises comme cela depuis pas mal de temps maintenant. mais sur un certains nombres de fichiers ca fonctionne mais pas audelà.

C’est étrange, chez moi quand je lance le premier script à ta manière (sh nomduscript) ça me renvoie ça :

$ sh ./test ./test: 3: ./test: [[: not found
Tu comprends donc que j’aie tendance à en conclure que 8 lignes sont passées à la trappe. :wink:
Je vais essayer sur une Squeeze pour voir si ça fait une différence avec ma testing.

Edit : ok, au temps pour moi, sur Squeeze ça m’indique bien la ligne 11 aussi. Mes excuses.
Mais ça ne change rien à ma remarque précédente :

MisterFreez t’a également donné une possible solution.

[quote=“syam”]…
Mais ça ne change rien à ma remarque précédente :

MisterFreez t’a également donné une possible solution.[/quote]

Je vois demain ,merci.