Localizando arquivos / pastas contendo 3 itens de texto

5

Estou executando o Ubuntu 14.04 e atualmente estou tentando procurar por arquivos e pastas que contenham "olá", "165" e "920" (em seus nomes - não dentro dos arquivos) usando o comando abaixo:

    find . -name "hello 165 920" > /search/results/here/search20170224.txt

Quando eu procuro uma string como essa no Nemo ("olá 165 920"), os resultados dados são o que eu estou querendo. Se os arquivos ou pastas contiverem as palavras "olá 165 920" (em qualquer ordem ou entre outros textos), então um resultado é mostrado.

Exemplos: helloxx165xx920, ola_165-920, ola165920

Então, o que eu quero fazer é definitivamente possível, mas através do comando find no CLI, estou apenas obtendo resultados para combinações perfeitas.

Não consigo descobrir como fazer esse tipo de pesquisa usando o comando find e preciso executar cerca de 500 dessas pesquisas uma após a outra; então, uma abordagem CLI é necessária para que eu não tenha que configurar cada pesquisa manualmente e acabe quebrando o Nemo a cada 5 minutos devido ao tamanho e à profundidade das buscas.

Qualquer ajuda que alguém possa dar seria muito apreciada =]

    
por Pete Duggan 24.02.2017 / 13:54

1 resposta

11

Você precisa usar curingas ( *foo* em vez de foo ), vários -name testes e combiná-los com -and :

find . -name "*hello*" -and -name '*165*' -and -name "*920*" > search20170224.txt

Se você tiver muitas strings diferentes para pesquisar, poderá salvá-las em um arquivo em que cada string é uma coluna (separada por espaços):

hello 165 920
goodbye 321 123

Você pode, então, iterar pelo arquivo e criar a consulta find :

while read a b c; do
    find . -name "*$a*" -and -name "*$b*" -and -name "*$c*" > search."$a"_"$b"_"$c".txt
done
    
por terdon 24.02.2017 / 14:00