如何修复以下命令,以便删除所有具有 rm 命令指定格式的文件?
#!/bin/bash
mogrify -verbose -format webp -quality 70 *.jpg *.jpeg *.JPEG *.JPG *.png *.PNG && rm --verbose *.jpg *.jpeg *.JPEG *.JPG *.png *.PNG
$SHELL
该命令成功将图像转换为 webp,但 rm 不会删除任何原始文件。
转换为 webp 后出现以下错误:
mogrify-im6.q16: unable to open image `*.jpeg': No such file or directory @ error/blob.c/OpenBlob/2874.
mogrify-im6.q16: unable to open image `*.JPG': No such file or directory @ error/blob.c/OpenBlob/2874.
mogrify-im6.q16: unable to open image `*.JPG': No such file or directory @ error/blob.c/OpenBlob/2874.
mogrify-im6.q16: unable to open image `*.png': No such file or directory @ error/blob.c/OpenBlob/2874.
mogrify-im6.q16: unable to open image `*.png': No such file or directory @ error/blob.c/OpenBlob/2874.
mogrify-im6.q16: unable to open image `*.PNG': No such file or directory @ error/blob.c/OpenBlob/2874.
mogrify-im6.q16: unable to open image `*.PNG': No such file or directory @ error/blob.c/OpenBlob/2874.
答案1
bash
在使用通配符模式之前,将此选项添加到您的脚本中
shopt -s nullglob
这告诉 shell 删除不匹配的模式,而不是将它们保留为文字。因此,从您的示例中,*.png
将被删除而不是保留为以星号开头的五个字符的文件名(可能不存在)。