Ash não tem expressões regulares, mas tem correspondência de curingas de shell. Você precisa usar case
, a correspondência de caractere curinga não está disponível por test
a.k.a. [ … ]
.
Não há como expressar o regex [a-zA-Z]*
usando caracteres curinga, mas você pode realizar o mesmo teste em duas etapas, uma para a primeira e outra para a segunda parte.
case "$x" in
[iI][mM][gG][-_][1-2][09][0-9][0-9][0-1][0-9][0-3][0-9][_-][0-2][0-9][0-6][0-9][0-6][0-9][.]*)
case "${x#*.}" in
*[!a-zA-z]*) :;;
*) d=${x#*[-_]}; d="${d%%[-_]*} - Family Photos";;
esac
esac
As construções de decodificação de prefixo e sufixo são portáveis para todos os shells POSIX, você não precisa usar expr
.