寫一隻sh轉換圖片 - Linux

Table of Contents

因為mogrify好像沒有遞迴子資料夾的功能

所以我拿某人寫的sh改寫來用

有幾個問題想解決:

1、遇上檔名有空格的資料夾就會失效。

2、要怎寫才能增加轉換的格式? (例如:png、bmp、gif > jpg )

3、遇上格式大小寫也會失效? (png?PNG?)



#!/bin/bash
function START()
{
for fileName in `ls -F | grep '.JPG'` #找尋資料夾內所有的PNG圖檔
do
echo ' Converting: "'$fileName'"...'; #輸出轉換中訊息
mogrify -resize 1280X1024 "${fileName%.JPG}.jpg"; #轉換指令
done;

for folderName in `ls -F | grep '/'` #深入子目錄
do
folderName=${folderName%/*}; #稍微修正目錄表示方式,顯示比較美觀
echo ' Into: "'$folderName'".'; #輸出訊息
cd "$folderName"; #移動至該目錄
START; #遞迴呼叫
cd ..; #子目錄完畢後回原目錄
done;
}
read -p 'Please pick a DIR:' dir; #輸入要進行作業的資料夾名稱
cd "$dir"; #切換到下層目錄
echo 'Here we go!'; #程序開始訊息
START; #執行遞迴函數
echo 'Done!'; #完成訊息

--
:「我叔叔以前有兼差做消波塊 <( ̄︶ ̄)> <( ̄︶ ̄)>
小時候我都稱那個做 "肉粽" ( ′-`)y-~ 」
鄉民a:「驚!」
鄉民b:「這個不能惹!」
鄉民c:「靠!比mini158還猛!」
摘錄自《 -快樂的童年》ψ http://ncd-nocando.blogspot.com

--

All Comments

Suhail Hany avatarSuhail Hany2010-08-29
1.可以先把檔名做轉換,最後在轉回去。
Mason avatarMason2010-09-02
3.副檔名大小寫一律轉小寫,對檔案也沒影響
John avatarJohn2010-09-06
改IFS ?
Jack avatarJack2010-09-10
mogrify不是可以一次轉很多檔案嘛,你這樣好像一次轉一個?