如何在bash脚本中循环遍历子目录?

时间:2016-11-13 22:50:34

标签: linux bash

假设我在一个目录dir1中。在该目录中,我有myscript.sh和目录subdir1。 subdir1有几个子目录,subsub1,subsub2,subsub3。在每个子目录中都有一个名为script2.sh的bash脚本,我想运行它们中的每一个。

首先,我只是想确保我可以打印所有子目录。 我有:

    for dir in /subdir1/*/ ; do
      echo $dir
    done

谁能告诉我我做错了什么?

2 个答案:

答案 0 :(得分:1)

我猜你可以用这种方式运行它们:

find subdir1 -type f -name "NAME_OF_YOUR_SCRIPT.sh" -exec {} \;

答案 1 :(得分:0)

如果任何目录中的名称中包含空格或其他特殊字符,您将遇到问题。

根据您提供的内容

for scriptfile in ./subdir/*/*script2.sh
do
/bin/sh $scriptfile
done

可能最适合您。

要处理目录名中的空格或其他特殊字符,您将要使用find并将输出传递给xargs。