我正在尝试将数百个*.jpg
文件转换为*.webp
以下文件libwebp
在 macOS 上。特别是,我想使用命令行工具cwebp
来执行转换。它的工作原理如下:
cwebp <input_file>.jpg -o <output_file>.webp
我的*.jpg
文件,其名称IMG_20160227_110640.jpg
大约是,存储在名为 的目录下root
。问题是*.webp
执行转换时文件不存在,所以我不知道如何将它们的名称传递给cwebp
.例如,如果我只有一张图片要转换,我会简单地执行
cwebp IMG_20160227_110640.jpg -o IMG_20160227_110640.webp
然而,有数百行,我不想输入数百行命令。如何使用正则表达式/编写脚本来自动转换?
答案1
使用for
循环与参数扩展相结合:
for f in *.jpg; do cwebp "$f" -o "${f%.jpg}.webp"; done
另请参阅LESS='+/Parameter Expansion' man bash
阅读有关 Bash 的内容。
然而,参数扩展在 POSIX 中指定;它不是 Bash 特有的。 (不过,Bash 可能有一些扩展。)上面的命令适用于任何 POSIX 系统。