使用通配符/正则表达式选择不存在的文件

使用通配符/正则表达式选择不存在的文件

我正在尝试将数百个*.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 系统。

相关内容