#1 Le 19/03/2014, à 17:22
- omnimax
aide pour dépoussiérer un nas
Bonjour à tous,
Au bureau on a un paquet d'images en png qui prennent une place folle. J'aimerai toutes les convertir en jpg.
for i in "**/*.(png|PNG)" ; do convert "$i" im.jpg ; done
Le souci est que convert $i im.jpg ne fonctionne pas puisque je lui demande convert /dossier/essai.png im.jpg et non convert /dossier/essai.png /dossier/im.jpg
Il faudrait que ma variable i soit débarrassée de son extension pour donner convert $i (=/dossier/essai).png im.jpg.
Comment fait-on cela ?
Merci pour votre aide.
Dernière modification par omnimax (Le 19/03/2014, à 17:23)
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#2 Le 19/03/2014, à 19:13
- casperfr
Re : aide pour dépoussiérer un nas
bonjour,
peut etre avec basename
for i in "**/*.(png|PNG)" ; do convert basename "$i" .jpg ; done
je ne sais pas si cela fonctionne, je n'ai qu'un ubuntu serveur sur lequel je ne peux pas essayé imagemagick
mais je sais que basename te renvois le nom du fichier sans l'extention.
c'est l'équivalent de
sed 's/\..*//'
Bon courage.
Hors ligne
#3 Le 19/03/2014, à 19:55
- pingouinux
Re : aide pour dépoussiérer un nas
Bonsoir,
Essaye plutôt :
shopt -s extglob
for i in **/*.@(png|PNG) ; do echo convert "$i" "${i/.???/.jpg}" ; done
Ajouté : Et bien sûr enlève le echo si c'est bon
Dernière modification par pingouinux (Le 19/03/2014, à 20:03)
Hors ligne
#4 Le 19/03/2014, à 21:29
- omnimax
Re : aide pour dépoussiérer un nas
bonsoir,
Merci pour vos contributions;
J'ai essayé vos solutions, et j'ai bidouillé un peu et au final ceci fonctionne.
Pouvez-vous me certifier que c'est sans risque, genre nom de fichier avec espaces ou caractères spéciaux ?
for i in **/*.(png|PNG) ; do convert "$i" "${i/.???/.jpg}" ; done
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#5 Le 19/03/2014, à 21:47
- tiramiseb
Re : aide pour dépoussiérer un nas
Tu as oublié "shopt -s extglob"...
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#6 Le 19/03/2014, à 22:40
- pingouinux
Re : aide pour dépoussiérer un nas
Pouvez-vous me certifier que c'est sans risque, genre nom de fichier avec espaces ou caractères spéciaux ?
Normalement oui, mais il est prudent de faire un test en laissant le echo. Il y aurait cependant un problème avec un nom de fichier contenant un ".", genre photo.vacances.png qui serait transformé en photo.jpgances.png.
Ajouté : En #4, il manque aussi @ dans **/*.@(png|PNG).
Édité : Pour éviter le problème ci-dessus
shopt -s extglob
for i in **/*.@(png|PNG) ; do echo convert "$i" "${i%.*}.jpg" ; done
Dernière modification par pingouinux (Le 20/03/2014, à 09:39)
Hors ligne
#7 Le 20/03/2014, à 13:28
- Postmortem
Re : aide pour dépoussiérer un nas
Salut,
Il manque aussi le shopt -s globstar pour que ** descende dans toute l'arbo. Sans ça, c'est équivalent à ne mettre qu'une étoile.
Edit :
Puis tant qu'à utiliser les options, on pourrait faire :
shopt -s globstar nocaseglob
for i in **/*.png ; do echo convert "$i" "${i%.*}.jpg" ; done
Dernière modification par Postmortem (Le 20/03/2014, à 13:40)
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#8 Le 20/03/2014, à 20:20
- pingouinux
Re : aide pour dépoussiérer un nas
Je ne peux qu'approuver…
Hors ligne