Ich habe eine Datei mit den Erweiterungen:
f1=f1.e1.e2.e3.sh.pl.cpp
Ich habe ein Array, das eine Liste von Erweiterungen enthält:
exts=(sh pl py)
Ich möchte die Erweiterungen in exts aus den Dateinamen entfernen. Gibt es dafür einen Trick? Ich denke an so etwas:
${f1%.${exts[@]}}
Es funktioniert offensichtlich nicht.
Antwort1
exts
Ich würde aus Ihrem Array ein Muster erstellen und dann Folgendes verwenden sed
:
f1=f1.e1.e2.e3.sh.pl.cpp
exts=(sh pl py)
function array_to_regex_alts() { # joins the array elements by \|
echo -n "$1"; shift; printf "\|%s" "$@"
}
pattern="\.\($(array_to_regex_alts ${exts[@]} )\)"
echo $f1 | sed "s/$pattern//g"