Seu padrão Regex não está combinando nada porque está tentando corresponder dois /
s, que são o separador de diretório para * nix, e nenhum nome de arquivo conteria isso. Eu estou supondo /.../g
vem do seu JavaScript (ou outro) Regex prática, não?
Faça:
for i in *.jpg; do [[ $i =~ ([0-9]+)\.jpg$ ]] && echo "${BASH_REMATCH[1]}"; done
bash
O Regexp não suporta \d
keyword para a classe de caractere [0-9]
. Então é melhor usar [0-9]
, se você quer depender do seu locale
, use a classe de caractere [:digit:]
:
for i in *.jpg; do [[ $i =~ ([[:digit:]]+)\.jpg$ ]] && echo "${BASH_REMATCH[1]}"; done
Exemplo:
$ for i in *.jpg; do [[ $i =~ ([0-9]+)\.jpg$ ]] && echo "${BASH_REMATCH[1]}"; done
123
12
1