Desde que você marcou bash , você pode realmente fazer isso com o shell correspondência de nome de arquivo, usando globs estendidos:
$ shopt -s extglob
$ touch /some/path/{2.6.0.3-8,22.66.0.333-8,foobar}
$ printf "%s\n" /some/path/+([0-9]).+([0-9]).+([0-9]).+([0-9])-+([0-9])
/some/path/22.66.0.333-8
/some/path/2.6.0.3-8
O padrão funciona como coisas mais comuns, como *
ou *.png
, para que você possa colocar as partes fixas como caminhos. Adicione uma barra à direita /
para corresponder apenas aos diretórios. (a barra aparece na saída também.)
Em ERE regex, o padrão é o mesmo que [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+-[0-9]+
. Uma versão mais difusa seria apenas verificar os caracteres permitidos, como +([-.0-9])
(ou [-.0-9]+
em ERE), mas isso também corresponderia, por exemplo, 123..456
.
Se você quiser apenas imprimir os nomes de arquivos, find
pode ser mais fácil, mas se você quer executar um comando neles, então um loop de shell também é uma opção (junto com find -exec
).