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