有没有一种方法可以递归地搜索嵌套的子目录并在每个子目录上执行命令?

问题描述

我找不到涉及嵌套子目录的问题。假设我有这样的目录大纲:

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...