您可以尝试使用for命令行

您可以尝试使用for命令行

我正在尝试对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

替代findrename

如果你想避免 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

可能有办法一步完成此操作(无需重命名),但我不知道怎么做。也许有人会插话并描述一种方法。

相关内容