2013-03-21 197 views
0

我試圖運行bash腳本,這將在當前目錄下運行,查找文件和做他們一些操作,當一個目錄中找到做同樣的它,一遍又一遍。枚舉文件和文件夾遞歸

讓我感到困惑的事情是我的操作,它應該轉換每個圖形文件,調整它的大小,並將它放在並行目錄結構中,這樣做對於四個並行目錄來說,這意味着它將模仿原始目錄結構創建文件夾。

問題是,它不工作,也它使遞歸到新創建的目錄..

你能幫助它嗎?

recurse() { 
for i in "$1"/*;do 
    if [ -d "$i" ];then 
     echo "dir: $i" 
     mkdir "res-ldpi/$i"    
     mkdir "res-hdpi/$i"    
     mkdir "res-mdpi/$i"    
     mkdir "res-xhdpi/$i" 
     recurse "$i";    
    elif [ -f "$i" ]; then 
     convert ./"$i" -resize 38% -unsharp 0x1 res-ldpi/"$i" 
    fi 
done 
} 

recurse . 

回答

1

可能沿着這些線路(未測試...)的東西:

while read fn 
do 
    dn=$(dirname "${fn}") 
    bn=$(basename "${fn}") 
    [[ -d "res-ldpi/${dn}" ]] || mkdir -p "res-ldpi/${dn}" 
    convert "${fn}" -resize 38% -unsharp 0x1 "res-ldpi/${dn}/${bn}" 
done < <(find "${1}"/. -type f -print) 

的想法是:1)使用find只給你每一個文件的名稱在目錄及其子目錄,2)將其拆分爲目錄和文件名,3)檢查目標目錄是否存在,並在必要時創建它,然後4)根據需要運行convert

這並沒有與res-hdpires-mdpires-xhdpi目錄麻煩,因爲你的示例代碼並沒有無論如何使用它們 - 它不應該太難搞清楚如何在添加這些......

+0

我試過了,但它並沒有真正起作用..我把應用程序複製到res-ldpi文件夾中,我的bash技能不足以解決這個問題...你能幫忙嗎? – 2013-03-23 18:40:38

相關問題