Necesidad de iterar hacia atrás en una ruta Linux/Unix

Necesidad de iterar hacia atrás en una ruta Linux/Unix

Tengo una secuencia de comandos que tendría varias rutas (nombres de carpetas).

Cada ruta de carpeta tendría un Dockerfile, pero no está claro en qué nivel existiría ese archivo.

Digamos que mi camino es"v1/flujo de aire/1.86/src/código/"

Pero el archivo puede estar en Me gusta, por ejemplo."v1/flujo de aire/1.86/src/Dockerfile"o puede ser en"v1/flujo de aire/1.86/Dockerfile"

Así que estoy tratando de encontrar una manera de dar un paso atrás ocd ../ verifique recursivamente si el archivo existe allí; si no, retroceda un directorio y mire nuevamente y, si existe, deje de buscar más

Cualquier ayuda es apreciada

Respuesta1

Una solución rápida y sucia:

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

Esto se verifica de arriba hacia abajo. Invertir el orden de la matriz no debería ser demasiado difícil.

información relacionada