У меня есть файл с расширениями:
f1=f1.e1.e2.e3.sh.pl.cpp
У меня есть массив, содержащий список расширений:
exts=(sh pl py)
Я хочу удалить расширения в exts из имени файла. Есть ли какой-то трюк, чтобы это сделать, я думаю о чем-то таком:
${f1%.${exts[@]}}
Очевидно, это не работает.
решение1
Я бы построил шаблон из вашего exts
массива, а затем использовал 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"