我有一个目录,里面有数千个图像文件,大部分是 JPG,但也有一些是 PNG。这些文件没有扩展名,只是编号。我需要将它们全部转换为 JPG。
使用寻找我可以获取所有文件及其类型的列表,然后我可以使用 Imagemagick 通过指定它们的类型将 PNG 转换为 JPG:
convert png:10020 jpg:10020.jpg
但我想对所有文件进行批量处理。我如何通过管道输出寻找并将所有 PNG 文件转换为 JPG?
答案1
find . -type f | while read IN; do
if [ "x$(file -b --mime-type $IN)" = "ximage/png" ]; then
convert png:$IN jpg:$IN.jpg;
fi;
done;
参数含义:
.
在当前目录中查找-type f
仅查找文件,而不是目录/套接字/等。while read IN; do
将每个文件名放入变量IN
并对其运行循环。if [ "x$(file -b --mime-type $IN)" = "ximage/png" ]; then
检查文件是否是 PNG...convert png:$IN jpg:$IN.jpg;
...如果是,则转换它。fi; done;
我们完了!
这次我已经测试过了,它可以工作,将一个充满 PNG 而不带.png
扩展名的目录转换为 JPG。