使用shell脚本。编写一个脚本。遍历当前文件夹下的所有文件夹。如果子文件夹包含cmd.sh 就进入子文件夹中执行 sh cmd.sh 直到所有文件夹都遍历完成
时间: 2023-08-09 21:04:25 浏览: 473
可以尝试使用以下脚本来实现:
```bash
#!/bin/bash
# 遍历当前文件夹下的所有子文件夹
for dir in $(find . -type d)
do
# 判断子文件夹中是否包含cmd.sh文件
if [ -f "$dir/cmd.sh" ]
then
# 进入子文件夹并执行cmd.sh
cd "$dir"
sh cmd.sh
cd ..
fi
done
```
解释一下脚本中的部分语句:
- `$(find . -type d)`:使用`find`命令遍历当前文件夹下所有子文件夹,并将结果传递给循环变量`dir`。
- `[ -f "$dir/cmd.sh" ]`:使用`[ -f ... ]`测试语句判断子文件夹中是否包含`cmd.sh`文件。
- `cd "$dir"`:使用`cd`命令进入子文件夹。
- `sh cmd.sh`:执行`cmd.sh`脚本。
- `cd ..`:返回上一级目录。
注意,该脚本需要放在需要遍历的文件夹中执行。可以使用`chmod +x script.sh`命令给脚本添加执行权限,然后使用`./script.sh`命令执行。
相关问题
使用shell脚本。编写一个脚本。遍历当前文件夹下的所有文件夹。如果子文件夹包含cmd.sh 就进入子文件夹中执行 sh cmd.sh 直到所有文件夹都遍历完成。a文件夹最先遍历
可以尝试使用以下脚本来实现:
```bash
#!/bin/bash
# 遍历当前文件夹下的所有子文件夹,以a文件夹为起点
for dir in $(find . -type d -name "a" -prune -o -type d -print)
do
# 判断子文件夹中是否包含cmd.sh文件
if [ -f "$dir/cmd.sh" ]
then
# 进入子文件夹并执行cmd.sh
cd "$dir"
sh cmd.sh
cd ..
fi
done
```
解释一下脚本中的部分语句:
- `$(find . -type d -name "a" -prune -o -type d -print)`:使用`find`命令遍历当前文件夹下所有子文件夹,以`a`文件夹为起点,并将结果传递给循环变量`dir`。
- `-name "a" -prune -o -type d -print`:`-name "a" -prune`表示匹配名称为`a`的文件夹,`-o -type d -print`表示排除名称为`a`的文件夹并输出剩余的文件夹路径。
- `[ -f "$dir/cmd.sh" ]`:使用`[ -f ... ]`测试语句判断子文件夹中是否包含`cmd.sh`文件。
- `cd "$dir"`:使用`cd`命令进入子文件夹。
- `sh cmd.sh`:执行`cmd.sh`脚本。
- `cd ..`:返回上一级目录。
注意,该脚本需要放在需要遍历的文件夹中执行。可以使用`chmod +x script.sh`命令给脚本添加执行权限,然后使用`./script.sh`命令执行。
使用shell脚本。编写一个脚本。遍历当前文件夹下的所有文件夹。如果子文件夹包含cmd.sh 就进入子文件夹中执行 sh cmd.sh 直到所有文件夹都遍历完成。a文件夹和b文件夹最先遍历
可以尝试使用以下脚本来实现:
```bash
#!/bin/bash
# 遍历当前文件夹下的所有子文件夹,以a文件夹和b文件夹为起点
for dir in $(find . -type d \( -name "a" -o -name "b" \) -prune -o -type d -print)
do
# 判断子文件夹中是否包含cmd.sh文件
if [ -f "$dir/cmd.sh" ]
then
# 进入子文件夹并执行cmd.sh
cd "$dir"
sh cmd.sh
cd ..
fi
done
```
解释一下脚本中的部分语句:
- `$(find . -type d \( -name "a" -o -name "b" \) -prune -o -type d -print)`:使用`find`命令遍历当前文件夹下所有子文件夹,以`a`文件夹和`b`文件夹为起点,并将结果传递给循环变量`dir`。
- `\( -name "a" -o -name "b" \) -prune -o -type d -print`:`-name "a" -o -name "b"`表示匹配名称为`a`或`b`的文件夹,`-prune`表示排除匹配到的文件夹,`-o -type d -print`表示输出剩余的文件夹路径。
- `[ -f "$dir/cmd.sh" ]`:使用`[ -f ... ]`测试语句判断子文件夹中是否包含`cmd.sh`文件。
- `cd "$dir"`:使用`cd`命令进入子文件夹。
- `sh cmd.sh`:执行`cmd.sh`脚本。
- `cd ..`:返回上一级目录。
注意,该脚本需要放在需要遍历的文件夹中执行。可以使用`chmod +x script.sh`命令给脚本添加执行权限,然后使用`./script.sh`命令执行。
阅读全文