Procura por arquivos cujos nomes de caminho contenham várias palavras sem uma ordem específica entre eles

3

Gostaria de pesquisar todos os arquivos cujos nomes de caminho continham várias palavras ( word1 , word2 ), sem nenhuma ordem específica entre eles. Exemplos de arquivos correspondentes são:

word1bar/fooword2/myfile
fooword2/word1bar/myfile
fooword2/bar/word1myfile

Qual comando pode resolver a tarefa?

Eu estou supondo que algum comando como esse funcionará:

find . -regex regexpattern

Obrigado.

Minha solução com locate é Melhore a pesquisa de arquivos por nomes de caminho com o pipeline locate e grep

    
por Tim 05.06.2018 / 16:46

1 resposta

10

É difícil fazer com um único padrão (regex ou shell), mas como find pode ter várias condições, podemos usar

find . -type f -path "*word1*" -path "*word2*" ...

Na regex você precisaria especificar todas as diferentes permutações das palavras, como .*word1.*word2.*|.*word2.*word1.* (ERE ou somente RE Perl), e isso explode rapidamente se você tiver mais do que duas palavras que deseja encontrar.

    
por 05.06.2018 / 16:48