Müssen in einem Linux/Unix-Pfad rückwärts iterieren

Müssen in einem Linux/Unix-Pfad rückwärts iterieren

Ich habe ein Skript, das mehrere Pfade (Ordnernamen) hätte.

Jeder Ordnerpfad hätte eine Docker-Datei, aber es ist unklar, auf welcher Ebene diese Datei existieren würde.

Nehmen wir an, mein Weg ist„v1/airflow/1.86/src/code/“

Die Datei kann aber auch bei Like sein, zum Beispiel„v1/airflow/1.86/src/Dockerfile“oder es kann bei„v1/airflow/1.86/Dockerfile“

also versuche ich einen Weg zu finden, wie ich einen Schritt zurücktreten kann oderCD ../ Überprüfen Sie rekursiv, ob die Datei dort vorhanden ist. Wenn nicht, gehen Sie ein Verzeichnis zurück und schauen Sie noch einmal nach. Wenn dies der Fall ist, hören Sie auf, weiter zu suchen.

Jede Hilfe ist willkommen

Antwort1

Eine schnelle und einfache Lösung:

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

Die Prüfung erfolgt von oben nach unten. Die Reihenfolge des Arrays umzukehren sollte nicht allzu schwierig sein.

verwandte Informationen