Você poderia tentar
find . -regex '.*myfile[0-9][0-9]?'
ou
find . \( -name "myfile[0-9][0-9]" -o -name "myfile[0-9]" \)
Eu tenho tentado criar uma string de comando de busca que encontrará todos os arquivos que terminam com um número 1-99, mas excluem todos os outros.
por exemplo. Eu quero encontrar myfile1 myfile99 mas não myfile456 e não myfilebackup
O regex em que estou pensando é myfile[1-9]{1,2}
, mas não consigo fazer isso funcionar com o find.
find . -regex '.*myfile[0-9]{1,2}'
OU
find . -iname 'myfile[0-9]{1,2}'
Pelo que vejo, é a parte {1,2}
que não está funcionando.
(a propósito você pode usar -name -regex
intercambiavelmente?)
Qualquer ajuda apreciada.
Se você tiver o GNU find, poderá usar outro tipo de expressão regular:
find . -regextype sed -regex '.*myfile[0-9]\{1,2\}'
De acordo com o GNU, find
usa um neutralizado sintaxe de expressão regular do Emacs por padrão - o Emacs suporta a sintaxe \{from,to\}
, mas pelo menos o GNU find
não apoiá-lo.
Estranhamente, o manual de referência não inclui uma seção sobre a sintaxe da expressão regular sed
, portanto, quem sabe quais partes são suportadas.
Tags bash find regular-expression