bash 函数递归查找目录

bash 函数递归查找目录

如何编写一个 bash 函数来查找特定的父目录。这是我的设置:

/home/user/dev/project1/branch1/deeply/nested/module/structure

用于开发人员的应用程序服务器位于:

/home/user/dev/project1/branch1/apps/someappserver

我想要一个 bash 函数,它递归地上升到分支的根目录,以快速将编译的模块复制到应用程序服务器、运行/停止应用程序服务器、调用特定的 Maven 目标等。

有任何想法吗?每个分支都有一个maven pom.xml,其中包含有关版本的准确信息

答案1

怎么样:

find_branch_root () {
    cwd=$PWD
    while [ ! -e "$cwd/pom.xml" ] && [ "x$cwd" != x/ ]; do
         cwd=`dirname "$cwd"`
    done
    echo "$cwd"
}

从路径中剥离目录,直到到达根 (/) 或找到“pom.xml”。

答案2

创建一个导出的环境变量,其名称类似于 ,PRJDIR其值类似于/home/user/dev/project1。这个环境变量可以很容易地被其他脚本引用,如下所示:

stop-app
cp ${PRJDIR}/modules/* modules/*
start-app

答案3

也许是一个while循环,cd ..除非/直到找到合适的文件或目录,然后cd进入新的目录结构,将您置于正确的位置?那不行吗?

相关内容