我正在尝试对convert -resize 1024X768 source.png dest.jpg
一系列图像使用该命令。我需要将其应用于所有可以执行的图像,convert -resize 1024X768 *.png
但我想知道如何提供与目标相同的文件名。
我仅使用转换命令作为示例。
答案1
您可以尝试使用for
命令行
通过“试运行”进行测试,
for i in *.png;do echo convert -resize 1024X768 "$i" "${i/.png}.jpg";done
当输出看起来不错时,删除echo
并进行转换,
for i in *.png;do convert -resize 1024X768 "$i" "${i/.png}.jpg";done
替代find
和rename
如果你想避免 bash 中的循环,你可以使用find
,
find -maxdepth 1 -name "*.png" -exec echo convert -resize 1024X768 {} {}.jpg \;
当输出看起来不错时,删除回声并进行转换,
find -maxdepth 1 -name "*.png" -exec convert -resize 1024X768 {} {}.jpg \;
之后,您可以使用它rename
来使目标文件名更漂亮(修剪笨拙的双扩展名)
rename -n s/.png.jpg$/.jpg/ *.png.jpg
当输出看起来不错时,删除-n
并进行真正的重命名,
rename s/.png.jpg$/.jpg/ *.png.jpg
可能有办法一步完成此操作(无需重命名),但我不知道怎么做。也许有人会插话并描述一种方法。