问题描述
我找不到涉及嵌套子目录的问题。假设我有这样的目录大纲:
dir1
|--dir2
| |--a
| |--b
| |--c
|--dir3
| |--dir4
| |--file1
| |--file2
| |--file3
| |--dir5
| |--test1
| |--test2
| |--test3
|--dir6
| |--fileA
| |--dir7
| |--fileB
说我必须在这些目录的每个目录和每个子目录中执行一系列命令。这是我需要执行的功能的概述:
-
如果当前工作目录中有一个CD,请
- 将CD放入一个子目录
- 检查新目录中是否有子目录
- 如果没有,执行功能,否则,将CD插入下一个子目录
- 如果没有更多子目录可导航,并且功能已完成,则CD返回上一个目录并找到下一个子目录,然后重复此过程,直到
dir1
下的每个子目录都执行了该功能为止。
有人可以为我提供可以执行此操作的Bash脚本功能吗?我是一个完整的初学者,这是我工作中给我带来最大麻烦的部分。预先感谢您的帮助!
解决方法
递归函数,是否就是您要寻找的?
#!/bin/bash
function loop {
for dir in */; do # */ to matach only directories
if [ -d "$dir" ]; then # check if directory has further directoies
(cd "$dir" && pwd && loop); # replace pwd with the command to be executed in the directory
fi
done
}
loop