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

Linux 如何在bash脚本中循环遍历子目录?,linux,bash,Linux,Bash,假设我在一个目录中,dir1。在该目录中,我有myscript.sh和一个目录subdir1。subdir有几个subsub目录,subsub1、sub2、sub3。在每个子目录中都有一个名为script2.sh的bash脚本,我想运行其中的每一个 首先,我只想确保我可以打印所有的子目录。 我有: 谁能告诉我我做错了什么吗?如果任何目录的名称中有空格或其他特殊字符,您将遇到问题 根据你提供的 for scriptfile in ./subdir/*/*script2.sh do /bin/sh

假设我在一个目录中,dir1。在该目录中,我有myscript.sh和一个目录subdir1。subdir有几个subsub目录,subsub1、sub2、sub3。在每个子目录中都有一个名为script2.sh的bash脚本,我想运行其中的每一个

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


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

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

根据你提供的

for scriptfile in ./subdir/*/*script2.sh
do
/bin/sh $scriptfile
done
祝你一切顺利


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

我想您可以这样运行它们:

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

您可能需要
manbash
并搜索“globstar”,以及
manfind
。另外,请阅读有关创建一个。对于这个问题,一个很好的方法是包含用于生成脚本摘录失败的测试环境的命令。目前,这里几乎没有足够的内容来调试您的代码。这给了我一个没有这样的文件或目录消息。@HanBrolo-这就是为什么您需要提供一个可重复的示例来演示您遇到的问题。这个答案可能很有效,如果不行,那是因为你没有告诉我们一些事情。
find subdir1 -type f -name "NAME_OF_YOUR_SCRIPT.sh" -exec {} \;