在子目录列表上迭代Shell脚本

时间:2019-02-27 15:47:23

标签: bash shell loops ls

我有一个文件夹(我们叫它folder1仅包含子目录。我想编写一个shell脚本,该脚本在每个子目录上迭代几个python脚本。照原样,我必须输入到的绝对路径脚本中的每个子目录,但我希望能够cdfolder1并从那里直接运行shell脚本,并使其在子目录上自动进行迭代,无论它们的名称或{{ 1}}。

当前代码(保存为shellscript.sh):

folder1

然后我可以通过打开终端(Mac OSX v 10.13.6)并运行#! /bin/sh declare -a arr=("/path/folder1/subdir1" "/path/folder1/subdir2" "/path/folder1/subdir3" "/path/folder1/subdir4") for i in "${arr[@]}" do echo "$i" python /path/to/pythonscript1.py "$i" python /path/to/pythonscript2.py "$i" done 来运行它。我希望脚本中的sh path/to/shellscript.sh声明能够根据我所在的cwd的内容自动填充。我发现this有用的链接,并能够在终端中作为独立命令运行但无法弄清楚如何将其合并到shell脚本中。有提示吗?

1 个答案:

答案 0 :(得分:2)

    for dir in ./* ./**/*    # list directories in the current directory
    do
        python $dir
    done

./*是dir中的文件,。/ ** / *是子文件夹中的文件。

确保目录中只有python文件,它将运行该目录中的所有文件