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 +
).