好的,我正在尝试遍历目录中的所有图像并对它们进行一些压缩。这是我的代码。
#!/bin/bash
for f in *.jpeg; do
echo "Processing $f file..";
magick convert -quality 85% $f $f
done
以下是它的输出:
$ bash compress.sh Processing *.jpeg file.. convert: unable to open
image '*.jpeg': Invalid argument @ error/blob.c/OpenBlob/3094.
convert: no images defined `*.jpeg' @
error/convert.c/ConvertImageCommand/3254.
$f
引用实际上是字符串“* .jpeg”,这绝对不正确。
这是我的文件夹结构。
答案 0 :(得分:0)
您应该使用适当的文件名掩码(目录和扩展名)查找文件。如果bash不能扩展文件名:
,也应该有跳过路径#!/bin/bash
IMAGE_PATH=`dirname ${BASH_SOURCE[0]}`/nature
for f in $IMAGE_PATH/*.jpg $IMAGE_PATH/*.jpeg; do
echo -n "Processing $f file... ";
if [ ! -r "$f" ]; then
echo "skip!";
continue;
fi;
magick convert -quality 85% "$f" "$f";
echo "done.";
done
PS:"$f"
(带引号)用于名称中带空格的文件。
更新:使用脚本目录添加。
答案 1 :(得分:0)
你有一个拼写错误 - .jpg
与.jpeg
。代码没有问题。
答案 2 :(得分:0)
我最终做到了这一点,这就完成了工作。
#!/bin/bash
find ./images -name '*.jpg' | while read FILE; do
magick convert -quality 75% "$FILE" "$FILE"
done