1

У меня есть файл с расширениями:

f1=f1.e1.e2.e3.sh.pl.cpp

У меня есть массив, содержащий список расширений:

exts=(sh pl py)

Я хочу удалить расширения в exts из имени файла. Есть ли уловка, чтобы сделать это, я думаю о чем-то в этом роде:

${f1%.${exts[@]}}

Это явно не работает.

1 ответ1

0

Я хотел бы построить шаблон из вашего массива 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"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .