convert source_filename.ext1 destination_filename.ext2
我想使用 zsh 向其提供文件夹中的文件path_to_source
并输出结果(具有相同名称的文件,但带有不同的扩展名)文件夹下path_to_destination
。
我相信我可以使用find
andxargs
来实现这一点,但我没有想出任何有效的方法。我还认为 ZSH 可能有一些对此有用的内置函数。任何指示将不胜感激。
笔记:据我所知,convert
没有处理一批文件的本机方法,所以我需要一个一个地提供文件。无论哪种情况,我都有兴趣解决使用这些参数逐个文件提供命令文件的问题。
答案1
for x in /path/to/source/**/*.ext1; do convert $x ${x:r}.ext2 done
在r
是${x:r}
一个历史修改器。有一个简短的形式for
可以节省一些字符。
for x (/path/to/source/**/*.ext1) convert $x ${x:r}.ext2
答案2
我会这样做:
cd path_to_source
find . | sed 's/.ext1$//' | xargs convert {}.ext1 ../path_to_destination/{}.ext2
答案3
您可以使用选项(从 开始)批量处理文件并mogrify
从一种格式转换为另一种格式,以指定在其中输出处理后的图像的不同目录:-path
imagemagick v6.2.0
mogrify -path /path/to/dest_filename -format ext2 /path/to/source_filename/*.ext1
所以例如
mogrify -path /home/myjpgs -format jpg /media/images/*.png
将转换目录.png
中的所有图像/media/images
以jpg
保持相同的文件名(仅扩展名更改)并将生成的图像保存到/home/myjpgs