La syntaxe de la command convert
dans ImageMagick est
convert source_filename.ext1 destination_filename.ext2
Je voudrais utiliser zsh pour le nourrir avec des files dans un dossier path_to_source
et sortir le résultat (files avec le même nom, mais avec une extension différente ) sous le dossier path_to_destination
.
Je crois que je peux utiliser find
et xargs
pour cela, mais je n'ai pas trouvé ce qui a fonctionné. Aussi, je présume que ZSH peut avoir quelques builtins qui sont utiles pour cela. Tous les pointeurs seraient grandement appréciés.
Remarque: pour autant que je sache, convert
n'a pas une façon native de gérer un lot de files, donc j'ai besoin de nourrir les files un par un. Dans les deux cas, je suis intéressé à résoudre le problème de l'alimentation d'un file de commands par file avec ces arguments.
for x in /path/to/source/**/*.ext1; do convert $x ${x:r}.ext2 done
Le r
dans ${x:r}
est un modificateur d'historique . Il y a une forme courte for
cela enregistre quelques caractères.
for x (/path/to/source/**/*.ext1) convert $x ${x:r}.ext2
Je le ferais avec:
cd path_to_source find . | sed 's/.ext1$//' | xargs convert {}.ext1 ../path_to_destination/{}.ext2
Vous pouvez traiter par lots vos files avec mogrify
et les convertir d'un format à l'autre en utilisant l'option -path
(à partir d' imagemagick v6.2.0
) pour spécifier un directory différent dans lequel sortir les images traitées:
mogrify -path /path/to/dest_filename -format ext2 /path/to/source_filename/*.ext1
donc par exemple
mogrify -path /home/myjpgs -format jpg /media/images/*.png
convertira toutes les images .png
du directory /media/images
en jpg
gardant le même nom de file (seulement l'extension change) et sauvegardera les images résultantes dans /home/myjpgs