[1510852838790,1510898258530] é um operador glob padrão que corresponde a um caractere no conjunto de caracteres. [ab,c] corresponde a a , b , , ou c . Então [1510852838790,1510898258530] é o mesmo que [,01235789] ou [,0-357-9] . Ou seja, corresponde a vírgulas ou dígitos decimais diferentes de 4 e 6 .
*(...) é um operador glob do shell Korn (também suportado por zsh -o kshglob e bash -O extglob ) que corresponde a 0 ou mais ... .
Portanto, *([1510852838790,1510898258530]).jpg corresponde a qualquer sequência de ,01235789 caracteres seguida por .jpg .
Se você quisesse corresponder qualquer string que consistisse em um número decimal entre 1510852838790 e 1510898258530, você precisaria do operador <x-y> glob do zsh shell:
printf '%s\n' <1510852838790-1510898258530>.jpg
A resposta à qual você está vinculando refere-se a outro recurso do shell zsh (novamente não bash ): o qualificador [x,y] glob.
Qualificadores Glob é uma parte (...) que é adicionada ao final de uma glob para adicionar alguns critérios diferentes daqueles baseados no nome.
Por exemplo, *.jpg(.) é *.jpg mas limitado a arquivos regulares (excluindo diretórios, links simbólicos, sockets, fifos ...)
*.jpg([5,10]) é o quinto ao décimo arquivos na lista de arquivos que correspondem a *.jpg (classificados em modo léxico).
Observe que os qualificadores zsh glob estão em conflito com kshglob . Se você quiser usar kshglob (mas geralmente você não o faria, a menos que queira interpretar o código pretendido para ksh como zsh extendedglobs são geralmente melhores que os ksh), você geralmente também deseja desabilitar a opção bareglobqual (ou use o comando o modo de emulação ksh com emulate ksh que cuidaria disso e também permitiria mais comportamentos semelhantes ao ksh).
O equivalente a ksh ' *(x) em zsh extended globs é x# (como regexp x* , exceto que em globs * é usado para outra coisa).
bash não tem o operador <x-y> glob nem os qualificadores glob. Em bash , você pode fazer:
zsh -c "printf '%s\n' <1510852838790-1510898258530>.jpg"
Ou você pode imprimir todos os arquivos number.jpg e postar a saída com awk :
shopt -s extglob
printf '%s\n' *([0-9]).jpg |
awk -F. '$1 >= 1510852838790 && $1 <= 1510898258530'
De qualquer forma, se você vai tentar encontrar lacunas na sequência de números, provavelmente vai querer usar awk de qualquer maneira.
Como (de volta a usar zsh ):
print -l <->.jpg(n) | awk -F. '
{diff = ($0 - prev) / 1000 / 60}
NR > 1 && (diff < 29 || diff > 31) {print $0, "diff=" diff}
{prev = $0}'