#!/bin/bash
function START()
{
echo $FromType;
for fileName in `ls -F | grep $FromType` #找尋資料夾內所有的PNG圖檔
do
echo ' Converting: "'$fileName'"...'; #輸出轉換中訊息
mogrify -resize ">1280X1024" -format $ToType $fileName; #轉換指
令
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"; #切換到下層目錄
read -p '請輸入要轉換的圖片格式:' FromType;
read -p '清輸入要轉換為的圖片格式:' ToType;
echo 'Here we go!'; #程序開始訊息
START; #執行遞迴函數
echo 'Done!'; #完成訊息
---------------------------
鄙人做了一些修改,應該可以滿足你的要求。至於你提到的空文件夾的問題,我沒有遇到。
==> NoCanDo.bbs@ptt.cc (沒法度) 提到:
> 因為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!'; #完成訊息
--
☆ [Origin:椰林風情] [From: 121.22.24.11] [Login: 21] [Post: 4]
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
問題
1
4