0

シェルスクリプトに単純なループがあり、ディレクトリ内の各ファイルに対して別のループを実行できるようにしたい...現在、各ファイルをエコーするように要求していますが、各ファイルでさらに多くのことをしたいのですが、しかし、最初にこれを理解したい...

for dir in "$@/"*
do
folder=$(basename "$dir")
path="/Users/wme/Desktop/test3/"
if [ ! -d "$path$folder" ]; then
mkdir "$path$folder"
mkdir "$path$folder/mp4"
mkdir "$path$folder/mov"
mkdir "$path$folder/ogg"
mkdir "$path$folder/webm"
mkdir "$path$folder/img"
fi
for file in "$dir/"*
    echo $file
done
done

したがって、基本的には、それらのフォルダーのフォルダー構造を作成するすべてのディレクトリを見つけることです。次に、これらの各フォルダー内のムービーを処理する必要があります...しかし、2 番目のネストされたループを実行しようとするとエラーが発生します。私は間違っていますか?

また、これを Automator で実行しているため、実際にはエラーは発生せず、アクションが失敗したとだけ表示されることに注意してください。

4

1 に答える 1

0

最初の for ループにも問題があります。ではなく"$@/"*に展開されます。あなたは必要になるでしょう$1 $2 ... $n/*$1/* $2/* ... $n/*

path="/Users/wme/Desktop/test3"
for dir in "$@"; do
    for subdir in "$dir/"*; do
        folder=$(basename "$subdir")

        if [ ! -d "$path/$folder" ]; then
            for ftype in mp4 mov ogg webm img; do
                mkdir -p "$path/$folder/$ftype"
            done
        fi
        for file in "$subdir/"*
           echo $file
        done
done
于 2013-02-15T21:04:47.427 に答える