Resumindo, eu instintivamente escrevi um comando como este para encontrar os dois arquivos prefix.ext
e prefix_suffix.ext
descer uma hierarquia
find /some/path -type f -name 'prefix?(_suffix).zip'
mas não funciona.
Como man find
, under -name patter
se refere ao padrão como um "padrão de shell", eu estava vagando se alguém tem controle sobre qual padrão deve ser usado e, especificamente, se a extglob
opção pode ser usada.
find
usa apenas padrões de shell “básicos”, conforme descrito em POSIX . Ele não suportaextglob
globs de estilo (mesmo que a implementação GNU diga que usafnmatch
, e a implementação da biblioteca GNU Cfnmatch
suporta padrões estendidos ).Se estiver usando GNU
find
, você pode filtrar usando expressões regulares; consulte a seção relevante da documentação para obter detalhes:com o tipo de expressão regular padrão ou
com ERE.
Como já foi apontado por outros, o
find
utilitário por padrão não suporta padrões de globbing estendidos como encontrados nobash
shell e em outros (originalmente herdados doksh
shell).Você pode usar o
bash
shell para realizar esses testes:No entanto, isso é terrivelmente ineficiente, pois você precisaria gerar um
bash
processo para cada arquivo que deseja investigar. Faria mais sentido reescrever o padrão de globbing estendido usando um ou vários padrões normais:Isso tem a vantagem de ser portátil e fácil de entender.
A outra resposta mencionou expressões regulares, o que me fez pensar em uma solução óbvia: usar
-regex
em vez de-name
:Eu suspeito que pode ser mais lento, mas talvez não tanto.