Необходимо выполнить итерацию в обратном направлении в пути Linux/Unix

Необходимо выполнить итерацию в обратном направлении в пути Linux/Unix

У меня есть скрипт, который имеет несколько путей (имен папок).

Каждый путь к папке будет иметь Dockerfile, но неизвестно, на каком уровне будет существовать этот файл.

Допустим, мой путь —"v1/airflow/1.86/src/code/"

Но файл может быть на Like например"v1/airflow/1.86/src/Dockerfile"или это может быть в"v1/airflow/1.86/Dockerfile"

поэтому я пытаюсь найти способ сделать шаг назад илиCD ../ рекурсивно проверьте, существует ли файл, если нет, то вернитесь на один каталог назад и проверьте снова, и если есть, прекратите дальнейшие поиски.

Любая помощь приветствуется.

решение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

Это проверка сверху вниз. Обратный порядок массива не должен быть слишком сложным.

Связанный контент