com zsh
:
echo file.<->
<->
sendo uma forma especial de <x-y>
como <1-100>
, mas que corresponde a qualquer número inteiro decimal positivo sem restrição (qualquer sequência não vazia de dígitos decimais). Ou com a opção extendedglob
:
echo file.[0-9]##
##
sendo o equivalente do operador de expressão regular estendida +
.
Com ksh
ou bash -O extglob
(ou depois de shopt -s extglob
dentro de bash
) ou zsh -o kshglob
(ou depois de setopt kshglob
dentro de zsh
):
echo file.+([0-9])
Novamente, +(x)
é igual a ERE x+
.
ksh93
também pode usar EREs em seu glob com:
echo ~(E).*\.[0-9]+$
(o .*
não é estritamente necessário aqui, é apenas que sem ele, ~(E)\.[0-9]+$
também corresponderia a arquivos ocultos)
Os globs padrão não têm um equivalente. Tudo o que eles têm são:
-
*
para corresponder a qualquer número de caracteres -
?
para corresponder a qualquer caractere único -
[criteria]
para corresponder a um caracter que corresponda aos critérios .
você precisaria filtrar a lista como:
set -- *.*[0-9]
for i do
case ${i##*.} in
(*[!0-9]*) ;;
(*) set -- "$@" "$i"
esac
shift
done
echo "$@"
Ou seja, da lista de nomes de arquivos que contêm .
e terminam com um dígito, exclua aqueles em que a parte após o último .
contenha um não dígito.