在需要限制大小的子文件夾中有圖像(720最大寬度或1100最大高度)。他們的文件名必須保留。開始於:Bash convert resize遞歸保存文件名
for img in *.jpg; do filename=${img%.*}; convert -resize 720x1100\> "$filename.jpg" "$filename.jpg"; done
它在每個目錄內工作,但有很多子文件夾與這些圖像。嘗試find . -iname "*.jpg" -exec cat {}
,但它沒有按預期創建一個列表。
這也沒有工作:
grep *.jpg | while read line ; do `for img in *.jpg; do filename=${img%.jpg}; convert -resize 720x1100\> "$filename.jpg" "$filename.jpg"`; done
也不是這:
find . -iname '*jpg' -print0 | while IFS= read -r -d $'\0' line; do convert -resize 720x1100\> $line; done
這使我的錯誤消息 「轉換:沒有圖像定義。」然後:
find . -iname '*.jpg' -print0 | xargs -0 -I{} convert -resize 720x1100\> {}
給我同樣的錯誤信息。
如果您使用的是Bash 4,那麼您可以輕鬆修改您的第一次嘗試來處理目錄樹中的所有jpg文件:'shopt -s globstar;對於img in **/*。jpg;做...; done'。 – pjh
也試過'找。 -type d -exec bash -c'cd「$ 0」||出口; shopt -s nullglob; f =(* .jpg); (($ {#f [@]}))&& echo convert -resize 640x1100 \>「$ {f [@]}」「$ {f [@]}」'{} \;'基於http:// stackoverflow.com/questions/23311384/execute-imagemagick-convert-in-subfolders-with-bash-script – motorbaby
我升級Bash並得到轉換:無法打開圖像**/*。jpg'':沒有這樣的文件或目錄。 – motorbaby