0

我的 Shell 脚本中有一个简单的循环,并且希望能够为目录中的每个文件运行另一个循环......现在我只是要求它回显每个文件,但我确实想对每个文件做更多的事情,但想先弄清楚这一点......

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

所以基本上它是找到所有目录为这些文件夹创建一个文件夹结构,现在我需要去处理每个文件夹中的电影......但是当我尝试做第二个嵌套循环时出现错误,什么我做错了吗?

另外应该注意的是,我在 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 回答