需要在 linux/unix 路徑中向後迭代

需要在 linux/unix 路徑中向後迭代

我有一個具有多個路徑(資料夾名稱)的腳本。

每個資料夾路徑都會有一個 Dockerfile,但不確定該檔案會存在於哪個層級。

可以說我的道路是“v1/airflow/1.86/src/code/”

Bu 該檔案可以位於例如“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

這是從上到下進行檢查。反轉數組的順序應該不會太難。

相關內容