확장자가 다음과 같은 파일이 있습니다.
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"