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.