[英]Git Bash for loop through files
好的,我試圖遍歷目錄中的所有圖像並對它們進行壓縮。 這是我的代碼。
#!/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”,這絕對是不正確的。
這是我的文件夾結構。
您應該使用適當的文件名掩碼(目錄和擴展名)查找文件。 如果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"
(帶引號)用於名稱中帶有空格的文件。
更新:使用腳本目錄添加。
您有錯別字.jpg
與.jpeg
。 否則代碼就可以了。
我最終完成了這項工作。
#!/bin/bash
find ./images -name '*.jpg' | while read FILE; do
magick convert -quality 75% "$FILE" "$FILE"
done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.