Tengo un archivo con extensiones:
f1=f1.e1.e2.e3.sh.pl.cpp
Tengo una matriz que contiene una lista de extensiones:
exts=(sh pl py)
Quiero eliminar las extensiones en exts del nombre de archivo. Hay algún truco para hacerlo, estoy pensando en algo de este tipo:
${f1%.${exts[@]}}
Obviamente no funciona.
Respuesta1
Construiría un patrón a partir de su exts
matriz y luego usaría 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"