Shell-Script
如何使用 imagemagick 旋轉目錄中的所有圖像?
我想旋轉目錄中與模式匹配的所有圖像。
到目前為止,我有:
for file in `ls /tmp/p/DSC*.JPG`; do convert $file -rotate 90 file+'_rotated'.JPG done
但這沒有輸出?
您的程式碼存在很多問題。首先,您正在解析 ls 這是一個Bad Idea。正如您所指出的那樣,您還需要引用變數,
$file
並且還應該引用它,這樣它就不會在空格上中斷。您正在聲明num
,但從未使用過。更安全的方法是:find /tmp/p/ -name "DSC*.JPG" | while IFS= read -r file; do convert "$file" -rotate 90 "$file"_rotated.JPG done
如果您的文件包含換行符,這仍然會有問題,但如果您的路徑包含空格,至少不會中斷。
如果文件都在同一個目錄中,可以使用 globbing 進一步簡化。您還可以使用參數擴展來創建
foo_rotated.JPG1
,而不是foo.JPG_rotated.JPG
:for file in /tmp/p/DSC*.JPG; do convert "$file" -rotate 90 "${file%.JPG}"_rotated.JPG done
mogrify -rotate 90 *.jpg
使用imagemagick 旋轉所有圖像的更好的 One-Liner
mogrify -rotate 90 /tmp/p/DSC*.JPG
實際上會在目錄中 旋轉所有.JPG
開頭DSC``p
Mogrify(imagemagick 的一部分)不同於
Convert
它修改原始文件 http://www.imagemagick.org/script/mogrify.php