Com ksh , bash -O extglob e zsh -o kshglob apenas:
test_file-+([[:digit:]])-master.tar.gz
Em bash , você precisa definir o extglob opção primeiro. Esse +(...) corresponde a uma ou mais ocorrências dos padrões fornecidos. [:digit:] quando dentro de uma expressão de parêntese [...] é um POSIX definido classe de caracteres que inclui dígitos decimais indo-arábicos ( [[:digit:]] é o mesmo que [0123456789] ou [0-9] ).
Ele corresponderá:
test_file-1234-master.tar.gz
test_file-1-master.tar.gz
test_file-123456789-master.tar.gz
Não será não compatível:
test_file-1b-master.tar.gz
test_file--master.tar.gz
test_file-a1-master.tar.gz
test_file-abcd-master.tar.gz
test_file-Ⅵ-master.tar.gz # roman numeral
test_file-٨-master.tar.gz # Eastern Arabic decimal digit
O comando tar na sua pergunta deve ser feito assim (com um loop):
shopt -s extglob # bash
# setopt kshglob # zsh
for f in test_file-+([[:digit:]])-master.tar.gz; do
tar xf "$f"
done
A sintaxe curta mais idiomática em zsh é:
setopt extendedglob
for f (test_file-[0-9]##-master.tar.gz) tar xf $f
( # sendo o equivalente a extensão estendida de regexp * e ## ou + ).