0

現在のディレクトリで実行され、ファイルを見つけてそれらに対して何らかの操作を実行するbashスクリプトを実行しようとしています。ディレクトリが見つかったら、同じことを何度も繰り返します。

私を混乱させたのは私の操作でした。各グラフィックファイルを変換し、サイズを変更し、並列ディレクトリ構造に配置することになっています.4つの並列ディレクトリに対してそれを行います。つまり、元のディレクトリ構造を模倣してフォルダを作成します行きます。

問題は、それが機能せず、新しく作成されたディレクトリに再帰し続けることです..

それを正しくするのを手伝ってもらえますか?

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 .
4

1 に答える 1

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-hdpiあなたのサンプルコードはとにかくそれらを使用しなかったので、ディレクトリres-mdpiとディレクトリを気にしませんres-xhdpiでした-それらをに追加する方法を理解するのはそれほど難しくないはずです...

于 2013-03-21T21:55:25.580 に答える