Como procurar por várias palavras (em qualquer ordem) no nome do arquivo - GUI (ou terminal)

0

Eu estou procurando uma ferramenta de busca (do Ubuntu 14.04 desktop) ou método / comando (Terminal) que me permitirá procurar em nomes de arquivos por palavras completas ou parciais, em qualquer ordem, independentemente da capitalização.

Você conhece um?

Aqui está um exemplo do que preciso fazer. Eu sei que em algum lugar em /home/myusername eu tenho um arquivo cujo nome contém as palavras "pessoal", "renda", "imposto", "estado". Mas não me lembro se o nome do arquivo é

  • state personal income tax return.doc ou
  • personal Income Tax return - state.doc ou
  • %código%.

e também não consigo lembrar se algumas das palavras estão em maiúsculas. Além disso, eu tenho um zilhão de outros arquivos com cada uma das palavras neles. Então, basta fazer uma pesquisa simples em uma das palavras (como apenas "estado", ou apenas "imposto") não me ajuda muito, porque traz de volta muitos arquivos.

Idealmente, gostaria de poder digitar [return state return] ou [state income return] e trazer os arquivos com as três palavras no nome do arquivo, independentemente da capitalização ou da ordem de as palavras. Uma ferramenta GUI seria preferível, mas um método Terminal também seria OK.

Eu já experimentei o Catfish e o gnome-search-tool / "Procurar por arquivos" - nenhum deles parece funcionar para vários termos de pesquisa, a menos que os termos sejam digitados na ordem em que ocorrem no nome do arquivo, sem outras palavras entre os termos da pesquisa.

    
por gj7755 17.02.2015 / 16:20

3 respostas

2

Não use grep ! find tem uma sintaxe de correspondência de nome de arquivo perfeitamente adequada. Para usar seu exemplo:

find [PATH...] -iname '*personal*' -iname '*income*' -iname '*tax*'

onde [PATH...] são zero ou mais caminhos sob os quais pesquisar.

Se você não desativou o banco de dados de nome de arquivo mlocate , talvez seja mais rápido fazer uso dele para uma pesquisa mais rápida. Infelizmente, ele não suporta múltiplos termos de pesquisa conjuntiva, então você precisa de grep também:

locate -ib income | grep -i personal | grep -i tax

Como você vai ver o resultado da pesquisa mesmo assim, talvez seja melhor procurar um superconjunto (caso sua memória não seja útil para você):

locate -ib income
    
por David Foerster 18.02.2015 / 01:35
1

Você pode usar grep tantas vezes quantas palavras quiser procurar nos nomes dos arquivos. Por exemplo, para descobrir os nomes de arquivos que contêm as palavras "renda", "imposto", "pessoal" e "estado", você pode fazer o seguinte:

ls -R /home/myusername/ | grep -i "income"  | grep -i "tax" | grep -i "personal" | grep -i "state"

Aqui, a opção -i garantirá a insensibilidade a maiúsculas e minúsculas.

NOTA:

find seria mais adequado para esse tipo de cenário. Verifique esta esta resposta e esta resposta para detalhes.

    
por heemayl 17.02.2015 / 17:30
0

O que geralmente faço é no meu diretório pessoal find . | grep 'SEARCHTERM1\|SEARCHTERM2'

    
por Ruediger 17.02.2015 / 17:09