OBA*_*AID 11 linux command image webp
我有很多webp format images in a folder but with .jpg` 扩展名
abc-test.jpg
这是一个webp格式图像。我希望它以.png相同名称的格式转换,因为我使用了这个命令并且它有效
find . -name "*.jpg" -exec dwebp {} -o {}.png \;
它将所有webp图像转换为,.png但问题是它正在保存这样的图像:
abc-test.jpg.png
如何在没有.jpg扩展名的情况下保存它
abc-test.png
Gab*_*les 49
在 Linux Ubuntu 20.04 上测试
这个问题是Google 搜索“linux Convert .webp image to png”的热门搜索。因此,对于任何在这里绊倒并只想得到这个简单答案的人来说,这里是:
# 1. Install the `webp` tool
sudo apt update
sudo apt install webp
# 2. Use it: convert in.webp to out.png
dwebp in.webp -o out.png
完毕!你现在有out.png.
dwebp我从问题本身了解到Mar*_*ell 16
如果您有许多要转换/重命名的文件,我建议您使用GNU Parallel,不仅可以通过并行执行它们来更快地转换它们,还可以利用修改文件名的功能。
你想要的命令是:
parallel dwebp {} -o {.}.png ::: *.jpg
其中 的{.}意思是“没有原始扩展名的文件名”。
如果你也想递归到子目录,你可以使用:
find . -name "*.jpg" -print0 | parallel -0 dwebp {} -o {.}.png
如果您想要进度表或“预计到达时间”,您可以在命令之后添加--progress或。--etaparallel
如果你想看看GNU Parallel会运行什么,而不实际运行任何东西,添加--dry-run.
在这个 CPU 变得“更胖”(更多内核)而不是更快的时代,我向您推荐GNU Parallel。
我用短的 oneliner 完成了它,不需要parallel安装在系统中
for x in `ls -1 *.jpg`; do dwebp {} -o ${x%.*}.png ::: $x; done
这适用于当前目录
我会尝试修改 @mark-setcell 递归解决方案,使其看起来像这样:
for x in `find . -name "*.jpg"`; do dwebp {} -o ${x%.*}.png ::: $x; done
这${x%.*}部分是这里需要解释的部分 - 它告诉 bash.从变量中获取点后面的所有内容x。对于带有更多点的名称,它很容易出现错误,因为我没有检查这里的正则表达式是懒惰的还是贪婪的 - 因此可以进一步调整答案。