需要在 Linux/Unix 路径中向后迭代

需要在 Linux/Unix 路径中向后迭代

我有一个具有多个路径(文件夹名称)的脚本。

每个文件夹路径都会有一个 Dockerfile,但不确定该文件存在于哪个级别。

假设我的路径是“v1/airflow/1.86/src/代码/”

例如,该文件可以位于“v1/airflow/1.86/src/Dockerfile”或者可以“v1/airflow/1.86/Dockerfile”

所以我想找到一种方法,让我可以退一步,或者光盘 ../ 递归检查文件是否存在,如果不存在则返回一个目录,然后再次查看,如果存在,则停止进一步查看

任何帮助表示感谢

答案1

一个快速而肮脏的解决方案:

dirs=$(echo v1/airflow/1.86/src/code/ | tr '/' ' ')
path=""
for element in ${dirs[@]}
do
    if [[ -z "$path" ]]; then path=$element; else path="$path/$element"; fi
    printf "%s\n" "$path"
    [[ -e "${path}/Dockerfile" ]] && printf "Found it!\n"
done

从上往下检查。反转数组的顺序应该不太难。

相关内容