簡體   English   中英

Git Bash通過文件循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM