ZSH: path de dénudage, nom de file et extension à partir d'une list de files pour la command d'une command

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