2016-11-13 90 views
-1

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

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

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

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

+0

你可能想'男人bash'并搜索“globstar”,以及'人find'。另外,请阅读关于创建[MCVE](http://stackoverflow.com/help/mcve)的信息。对于这个问题,一个很好的方法是包含用于生成脚本摘录失败的测试环境的命令。就目前来看,这里还远远不够调试你的代码。 – ghoti

回答

0

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

根据您所提供什么

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

可能最适合您。

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

+0

这给了我一个没有这样的文件或目录消息。 –

+0

@HanBrolo - 这就是为什么你需要提供一个可重复的例子来证明你遇到的问题。这个答案可能很有效,如果没有,那是因为你没有告诉我们。 – ghoti

1

我想你可以运行它们是这样的:

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