#1 Le 11/05/2006, à 09:01
- Isaric
[Résolu] Mon_premier Sh pour modifier des images
Digikam ne marchant pas encore sur Dapper
Je tente
#!/bin/bash
IMG_EXT="jpg"
IMAGES_PREFIX="Mon_Pref-"
#**** Conversion/effacement par lot L=1600 de toutes les images en jpeg ********
#-------------------------------------------------------------
for i in `ls *.*`
do
FILENAME=`basename $i .jpg`
echo "redimensionnement" $FILENAME.$IMG_EXT" en L=1600"
convert -resize 1600 $i $IMAGES_PREFIX$FILENAME.$IMG_EXT
rm -fr $FILENAME.$IMG_EXT
done
Cela ne semble pas marcher pour des noms de fichiers avec des blancs.
Je souhaite rajouter un truc dans le genre
#**** Renommer par lot les accents et les blancs ********
#-------------------------------------------------------------
for file in *
do
file_mod=`echo "$file" | tr '[àâäéèêëîïôöùûü ]' '[aaaeeeeiioouuu_]' | sed -e "s/'/_/g"`
mv "$file" "$file_mod"
done
Mon problème c'est que les blancs " " deivennent "]" est-ce juste un problème de Dapper ou mon code n'est pas bon ?
Dernière modification par Isaric (Le 22/05/2006, à 13:26)
"Être bahá'í signifie simplement aimer la terre toute entière, aimer l'humanité et essayer de la servir, travailler pour la paix universelle et la famille humaine" 'Abdul'l-Bahá
"Vouloir s'ouvrir aux autres n'est pas une preuve de faiblesse, c'est une preuve d'intelligence" Matthieu Ricard.
Hors ligne
#2 Le 11/05/2006, à 09:11
- benjou
Re : [Résolu] Mon_premier Sh pour modifier des images
ABSOLUMENT PAS SUR de moi
mais en bash, les espaces ( ) sont codés (\ ) donc ne faudrait-il pas que tu écrives
tr '[àâäéèêëîïôöùûü\ ]' '[aaaeeeeiioouuu_]' ??? (enfin comme je ne connais même pas la commande tr...)
écrasons l'infâme
Hors ligne
#3 Le 11/05/2006, à 09:32
- cep_
Re : [Résolu] Mon_premier Sh pour modifier des images
ou essaye de mélanger find .... -print0 et | xargs -0 ....
#4 Le 11/05/2006, à 09:57
- Isaric
Re : [Résolu] Mon_premier Sh pour modifier des images
ABSOLUMENT PAS SUR de moi
mais en bash, les espaces ( ) sont codés (\ ) donc ne faudrait-il pas que tu écrives
tr '[àâäéèêëîïôöùûü\ ]' '[aaaeeeeiioouuu_]' ??? (enfin comme je ne connais même pas la commande tr...)
Si je mets
tr '[àâäéèêëîïôöùûü\]' '[aaaeeeeiioouuu_]'
Les blancs restent des blancs !
Et j'ai le même problème avec les autres lettres un "é" devient "]i"
"Être bahá'í signifie simplement aimer la terre toute entière, aimer l'humanité et essayer de la servir, travailler pour la paix universelle et la famille humaine" 'Abdul'l-Bahá
"Vouloir s'ouvrir aux autres n'est pas une preuve de faiblesse, c'est une preuve d'intelligence" Matthieu Ricard.
Hors ligne
#5 Le 11/05/2006, à 10:15
- cep_
Re : [Résolu] Mon_premier Sh pour modifier des images
Si tu n'as pas de sous-répertoires, inutile de te compliquer la vie :
:~$ vdir photos2
total 844
-rwx------ 1 cep cep 134505 2006-04-30 10:50 buché\ ron.jpg
-rwx------ 1 cep cep 171108 2006-04-30 10:50 dé\ coup1.jpg
-rwx------ 1 cep cep 160765 2006-04-30 10:50 dé\ coup2.jpg
-rwx------ 1 cep cep 178656 2006-04-30 10:50 decoup3.jpg
-rwx------ 1 cep cep 191590 2006-04-30 10:51 decoup4.jpg
:~$ mogrify -resize 150% ~/photos2/*
:~$ vdir photos2
total 1288
-rwx------ 1 cep cep 209493 2006-05-11 11:08 buché\ ron.jpg
-rwx------ 1 cep cep 262743 2006-05-11 11:08 dé\ coup1.jpg
-rwx------ 1 cep cep 248419 2006-05-11 11:08 dé\ coup2.jpg
-rwx------ 1 cep cep 273913 2006-05-11 11:08 decoup3.jpg
-rwx------ 1 cep cep 293812 2006-05-11 11:08 decoup4.jpg
mogrify a redémensionné les photos de 800x600 à 1200x900
Les noms avec espaces et accents avaient été mis juste pour la démo
Si tu as des sous-répertoires, adapte ou fais par lots pour ne pas surcharger le système s'il y a beaucoup de photos.
#6 Le 11/05/2006, à 11:44
- benjou
Re : [Résolu] Mon_premier Sh pour modifier des images
c'est backslash+espace (\ ) pas backslash tout seul(\)
essaie plutot ca...
écrasons l'infâme
Hors ligne
#7 Le 11/05/2006, à 11:58
- cep_
Re : [Résolu] Mon_premier Sh pour modifier des images
for i in * ; do mv "$i" `echo $i | tr "àçéèêëîïôöùü " "aceeeeiioouu_"` ; done
pour accents et espaces \ remplacés par _
Tu peux aussi ajouter les majuscules si nécessaire.
#8 Le 11/05/2006, à 12:48
- Isaric
Re : [Résolu] Mon_premier Sh pour modifier des images
for i in * ; do mv "$i" `echo $i | tr "àçéèêëîïôöùü " "aceeeeiioouu_"` ; done
pour accents et espaces \ remplacés par _
Tu peux aussi ajouter les majuscules si nécessaire.
aéy 2.jpg devient a_ey_2.jpg
le "é"=>"_e"
"Être bahá'í signifie simplement aimer la terre toute entière, aimer l'humanité et essayer de la servir, travailler pour la paix universelle et la famille humaine" 'Abdul'l-Bahá
"Vouloir s'ouvrir aux autres n'est pas une preuve de faiblesse, c'est une preuve d'intelligence" Matthieu Ricard.
Hors ligne
#9 Le 11/05/2006, à 13:51
- cep_
Re : [Résolu] Mon_premier Sh pour modifier des images
monsieur pinaille
fais une recherche sur sed par exemple. Je n'ai pas trop le temps d'écrire les correspondances.
#10 Le 11/05/2006, à 14:44
- Isaric
Re : [Résolu] Mon_premier Sh pour modifier des images
for i in * ; do mv "$i" `echo $i | tr "àçéèêëîïôöùü " "aceeeeiioouu_"` ; done
aéy 2.jpg devient a_ey_2.jpg
le "é"=>"_e"
for i in * ; do mv "$i" `echo $i | tr "àçéèêëîïôöùü " "aceeeeiioouu-"` ; done
aéy 2.jpg devient a-ey-2.jpg
le "é"=>"-e"
Comment ça marche ?
"Être bahá'í signifie simplement aimer la terre toute entière, aimer l'humanité et essayer de la servir, travailler pour la paix universelle et la famille humaine" 'Abdul'l-Bahá
"Vouloir s'ouvrir aux autres n'est pas une preuve de faiblesse, c'est une preuve d'intelligence" Matthieu Ricard.
Hors ligne
#11 Le 11/05/2006, à 15:51
- Isaric
Re : [Résolu] Mon_premier Sh pour modifier des images
for i in * ; do mv "$i" `echo $i | tr " " "_"` ; done
for i in * ; do mv "$i" `echo $i | tr "é" "e"` ; done
aéy 2.jpg devient aeey_2.jpg
"é"->"ee"
"Être bahá'í signifie simplement aimer la terre toute entière, aimer l'humanité et essayer de la servir, travailler pour la paix universelle et la famille humaine" 'Abdul'l-Bahá
"Vouloir s'ouvrir aux autres n'est pas une preuve de faiblesse, c'est une preuve d'intelligence" Matthieu Ricard.
Hors ligne
#12 Le 11/05/2006, à 17:59
- cep_
Re : [Résolu] Mon_premier Sh pour modifier des images
Alors inspire-toi de ceci (il te faudra ajouter les autres lettres avec accents et s'il y a des sous-répertoires voir plutôt avec find) :
#!/bin/bash
for i in * ; do
nom=`echo $i | sed -e s/\ /\_/g |
sed -e s/\é/\e/g |
sed -e s/\è/\e/g |
sed -e s/\ê/\e/g |
sed -e s/\ù/\u/g |
sed -e s/\ /\_/g`
mv "$i" "$nom"
done
Mais, encore une fois regarde ce que j'ai mis plus haut pour mogrify qui est très simple et utilise éventuellement les % sans s'occuper des noms et de l'orientation.
Bonne continuation.
cep
#13 Le 11/05/2006, à 20:40
- Isaric
Re : [Résolu] Mon_premier Sh pour modifier des images
Merci cep
Cela marche bien, mais seulement pour les Largeurs
#!/bin/bash
#**** Renommer par lot les accents et les blancs ***
#---------------------------------------------------
for i in * ; do
nom=`echo $i | sed -e s/\ /\_/g |
sed -e s/\à/\a/g |
sed -e s/\ç/\ç/g |
sed -e s/\é/\e/g |
sed -e s/\é/\e/g |
sed -e s/\è/\e/g |
sed -e s/\ê/\e/g |
sed -e s/\ë/\e/g |
sed -e s/\î/\i/g |
sed -e s/\ï/\i/g |
sed -e s/\ô/\o/g |
sed -e s/\ö/\o/g |
sed -e s/\ù/\u/g |
sed -e s/\ü/\u/g |
sed -e s/\ /\_/g`
mv "$i" "$nom"
done
#-------------------------------------------------------------
IMG_EXT="jpg"
IMAGES_PREFIX="Mon_Pref-"
#**** Conversion/effacement par lot L=1600 de toutes les images en jpeg ********
#-------------------------------------------------------------
for i in `ls *.*`
do
FILENAME=`basename $i .jpg`
echo "redimensionnement" $FILENAME.$IMG_EXT" en L=1600"
convert -resize 1600 $i $IMAGES_PREFIX$FILENAME.$IMG_EXT
rm -fr $FILENAME.$IMG_EXT
done
Et aussi
#!/bin/bash
#---------------------------------
#*** Conversion par lot Dimension-max : 1600x1200 de toutes les images en jpeg ***
#---------------------------------
mogrify -resize 1600x1200 *.jpg
#---------------------------------
Dernière modification par Isaric (Le 12/05/2006, à 07:13)
"Être bahá'í signifie simplement aimer la terre toute entière, aimer l'humanité et essayer de la servir, travailler pour la paix universelle et la famille humaine" 'Abdul'l-Bahá
"Vouloir s'ouvrir aux autres n'est pas une preuve de faiblesse, c'est une preuve d'intelligence" Matthieu Ricard.
Hors ligne
#14 Le 11/05/2006, à 21:20
- cep_
Re : [Résolu] Mon_premier Sh pour modifier des images
mais seulement pour les Largeurs
mogrify -resize 1600x1200 *.jpg
Normal si tu positionnes la commande ainsi.
Je t'avais proposé des pourcentages. Si bien sûr les dimensions de départ sont toutes les mêmes.
Voir man mogrify et les adresses indiquées dans le man pour une doc complémentaire. Il y a beaucoup de possibilités.
#15 Le 12/05/2006, à 07:10
- Isaric
Re : [Résolu] Mon_premier Sh pour modifier des images
J'utilise :
#!/bin/bash
#---------------------------------
#*** Modification de format PNG ***
#---------------------------------
mogrify -format jpg *.png
#--------------------------------------------------
#*** Renommer par lot les accents et les blancs ***
#--------------------------------------------------
for i in * ; do
nom=`echo $i | sed -e s/\ /\_/g |
sed -e s/\à/\a/g |
sed -e s/\ç/\ç/g |
sed -e s/\é/\e/g |
sed -e s/\é/\e/g |
sed -e s/\è/\e/g |
sed -e s/\ê/\e/g |
sed -e s/\ë/\e/g |
sed -e s/\î/\i/g |
sed -e s/\ï/\i/g |
sed -e s/\ô/\o/g |
sed -e s/\ö/\o/g |
sed -e s/\ù/\u/g |
sed -e s/\ü/\u/g |
sed -e s/\ /\_/g`
mv "$i" "$nom"
done
#---------------------------------
#*** Effacement des fichiers PNG ***
#---------------------------------
for i in `ls *.png`
do
rm $i
done
#---------------------------------
#*** Conversion par lot Dimension-max : 1600x1200 de toutes les images en jpeg ***
#---------------------------------
mogrify -resize 1600x1200 *.jpg
#-------------------------------------------------------------
#*** rajout d'un préfix de toutes les images en jpeg ***
#-------------------------------------------------------------
IMAGES_PREFIX="Mon_Pref-"
for i in `ls *.jpg`
do
FILENAME=`basename $i`
echo "rajout d'un préfix à" $FILENAME
rename $FILENAME $IMAGES_PREFIX$FILENAME
done
On me dit :
...
rajout d'un préfix à a_d_0.jpg
Bareword "a_d_0" not allowed while "strict subs" in use at (eval 1) line 1.
Bareword "jpg" not allowed while "strict subs" in use at (eval 1) line 1.
Dernière modification par Isaric (Le 12/05/2006, à 13:37)
"Être bahá'í signifie simplement aimer la terre toute entière, aimer l'humanité et essayer de la servir, travailler pour la paix universelle et la famille humaine" 'Abdul'l-Bahá
"Vouloir s'ouvrir aux autres n'est pas une preuve de faiblesse, c'est une preuve d'intelligence" Matthieu Ricard.
Hors ligne
#16 Le 12/05/2006, à 09:57
- bobuse
Re : [Résolu] Mon_premier Sh pour modifier des images
Digikam ne marchant pas encore sur Dapper
C'est quoi c'te blague
Moi j'ai jamais eu de problème !
Hors ligne
#17 Le 12/05/2006, à 10:38
- Isaric
Re : [Résolu] Mon_premier Sh pour modifier des images
C'est quoi c'te blague
Moi j'ai jamais eu de problème !
Digikam ne marche pas sur Dapper
Je viens de faire une mise à jour Dapper... autre exemple une photo sur /home/isaric/Desktop
--> clic droit--> ouvrir avec Digikam et cela ne marche pas chez moi !
"Être bahá'í signifie simplement aimer la terre toute entière, aimer l'humanité et essayer de la servir, travailler pour la paix universelle et la famille humaine" 'Abdul'l-Bahá
"Vouloir s'ouvrir aux autres n'est pas une preuve de faiblesse, c'est une preuve d'intelligence" Matthieu Ricard.
Hors ligne
#18 Le 15/05/2006, à 11:00
- Isaric
Re : [Résolu] Mon_premier Sh pour modifier des images
Revenons à mon problème de script :
...
#-------------------------------------------------------------
#*** rajout d'un préfix de toutes les images en jpeg ***
#-------------------------------------------------------------
IMAGES_PREFIX="Mon_Pref-"
for i in `ls *.jpg`
do
FILENAME=`basename $i`
echo "rajout d'un préfix à" $FILENAME
rename $FILENAME $IMAGES_PREFIX$FILENAME
done
Pourquoi me dit_on :
...
rajout d'un préfix à a_d_0.jpg
Bareword "a_d_0" not allowed while "strict subs" in use at (eval 1) line 1.
Bareword "jpg" not allowed while "strict subs" in use at (eval 1) line 1.
Si je mets
#-------------------------------------------------------------
#*** rajout d'un préfix de toutes les images en jpeg ***
#-------------------------------------------------------------
IMAGES_PREFIX="Mon_Pref-"
for i in `ls *.jpg`
do
FILENAME=`basename $i`
echo "rajout d'un préfix à" $FILENAME
rename ’s/\.jpg//’ $IMAGES_PREFIX$FILENAME
done
On me dit :
rajout d'un préfix à a_d_0.jpg
Unrecognized character \xE2 at (eval 1) line 1.
"Être bahá'í signifie simplement aimer la terre toute entière, aimer l'humanité et essayer de la servir, travailler pour la paix universelle et la famille humaine" 'Abdul'l-Bahá
"Vouloir s'ouvrir aux autres n'est pas une preuve de faiblesse, c'est une preuve d'intelligence" Matthieu Ricard.
Hors ligne
#19 Le 15/05/2006, à 17:22
- bertrand0
Re : [Résolu] Mon_premier Sh pour modifier des images
Cela ne semble pas marcher pour des noms de fichiers avec des blancs.
Tu as oublié de mettre des guillemets, ce qui fait qu'après le remplacement, les chaînes avec espace sont séparées. il faut écrire par exemple:
convert -resize 1600 $i "$IMAGES_PREFIX$FILENAME.$IMG_EXT"
Si tu veux que les blancs passent correctement en argument de convert.
EDIT: idem pour rm bien sûr
Dernière modification par bertrand0 (Le 15/05/2006, à 17:23)
Ceux qui écrivent comme ils parlent, quoiqu'ils parlent très bien, écrivent mal.
Buffon, Discours sur le style
Hors ligne
#20 Le 15/05/2006, à 17:38
- Isaric
Re : [Résolu] Mon_premier Sh pour modifier des images
Merci bertrand0
Et pour rename ?
C'est pas facile de trouver une doc en français sur sh !
"Être bahá'í signifie simplement aimer la terre toute entière, aimer l'humanité et essayer de la servir, travailler pour la paix universelle et la famille humaine" 'Abdul'l-Bahá
"Vouloir s'ouvrir aux autres n'est pas une preuve de faiblesse, c'est une preuve d'intelligence" Matthieu Ricard.
Hors ligne
#21 Le 16/05/2006, à 18:47
- bertrand0
Re : [Résolu] Mon_premier Sh pour modifier des images
C'est pas facile de trouver une doc en français sur sh !
man bash
la doc est entièrement traduite pour peu que tu aies installé le paquet manpages-fr.
Pour renommer, il faut virer les crochets dans ta commande tr, comme l'a indiqué cep dans le post #7.
Sinon, la méthode la plus efficace à mon avis pour virer les accents, c'est d'utiliser recode, par exemple avec un truc du genre:
ls | tee fichiers_old.tmp | recode -f ..flat > fichiers_new.tmp
paste fichiers_{old,new}.tmp | xargs -n2 mv -i
(le charset flat de recode est de l'ascii où tous les caractères accentués et autres sont remplacés par leur caractères de base; l'option -i de mv dans xargs empêche mv de réaliser le déplacement si le fichier destination existe déjà.)
Ceux qui écrivent comme ils parlent, quoiqu'ils parlent très bien, écrivent mal.
Buffon, Discours sur le style
Hors ligne
#22 Le 17/05/2006, à 07:43
- Isaric
Re : [Résolu] Mon_premier Sh pour modifier des images
la doc est entièrement traduite pour peu que tu aies installé le paquet manpages-fr.
je l'ai installé mais :
isaric@acer:~$ man man
me donne toujours un texte en anglais
Pour renommer, il faut virer les crochets dans ta commande tr, comme l'a indiqué cep dans le post #7.
Aux posts #8 #9 j'obtenais :
aéy 2.jpg devient a_ey_2.jpg
le "é"=>"_e"
ou
aéy 2.jpg devient aeey_2.jpg
"é"->"ee"
Sinon, la méthode la plus efficace à mon avis pour virer les accents, c'est d'utiliser recode, par exemple avec un truc du genre:
ls | tee fichiers_old.tmp | recode -f ..flat > fichiers_new.tmp
paste fichiers_{old,new}.tmp | xargs -n2 mv -i
(le charset flat de recode est de l'ascii où tous les caractères accentués et autres sont remplacés par leur caractères de base; l'option -i de mv dans xargs empêche mv de réaliser le déplacement si le fichier destination existe déjà.)
Là il me faut du temps pour décripter ...
isaric@acer:~$ man recode
Aucune entrée de manuel pour recode
isaric@acer:~$
"Être bahá'í signifie simplement aimer la terre toute entière, aimer l'humanité et essayer de la servir, travailler pour la paix universelle et la famille humaine" 'Abdul'l-Bahá
"Vouloir s'ouvrir aux autres n'est pas une preuve de faiblesse, c'est une preuve d'intelligence" Matthieu Ricard.
Hors ligne
#23 Le 17/05/2006, à 08:04
- cep_
Re : [Résolu] Mon_premier Sh pour modifier des images
Isaric, tu t'embrouilles dans tes modifications multiples.
Je viens de revérifier le script que je t'ai proposé en #12.
Chez moi, avant :
:~/photos2$ ls -1
buchéron.jpg
decouàp3.jpg
découp1.jpg
déc oup2.jpg
Après :
:~/photos2$ ls -1
bucheron.jpg
decouap3.jpg
decoup1.jpg
dec_oup2.jpg
Il peut bien sûr être amélioré.
Bonne continuation.
cep
#24 Le 17/05/2006, à 09:17
- bertrand0
Re : [Résolu] Mon_premier Sh pour modifier des images
isaric@acer:~$ man man
me donne toujours un texte en anglais
Et oui, toutes les pages ne sont pas traduites... mais celle de bash, qui t'intéressait est traduite, je l'ai sous les yeux en ce moment même.
Pour utiliser recode, il faut bien entendu l'installer avant:
sudo aptitude install recode
Ceux qui écrivent comme ils parlent, quoiqu'ils parlent très bien, écrivent mal.
Buffon, Discours sur le style
Hors ligne
#25 Le 17/05/2006, à 09:22
- cep_
Re : [Résolu] Mon_premier Sh pour modifier des images
Sinon, la méthode la plus efficace à mon avis pour virer les accents, c'est d'utiliser recode, ...
Sur les noms de fichiers ?