Ferramenta CLI simples para procurar

1

Existe uma ferramenta CLI semelhante a gnome-search-tool ? Estou usando locate , mas prefiro que agrupe os resultados nos quais o nome do diretório é correspondido. Recebo muitos resultados em que o caminho é correspondido, o que não é o que desejo:

/tmp/dir_match/xyz
/tmp/dir_match/xyz2/xyz3

Ele precisa ser rápido e, portanto, usar um índice de pesquisa.

    
por m33lky 12.02.2018 / 06:31

3 respostas

1

locate é muito versátil pode usar -r e um padrão regexp, para que você possa fazer muitas correspondências sofisticadas. Por exemplo, para corresponder aos diretórios a a0 a1 e assim por diante use '/a[0-9]*/' . Isso mostrará apenas diretórios com arquivos, já que você precisa do segundo / no caminho. Para corresponder apenas ao diretório, use $ para ancorar o padrão ao final do caminho, '/a[0-9]*$' .

Observe que há pelo menos duas versões do comando locate , uma de GNU , e um do Redhat (conhecido como mlocate). Use --version para descobrir o que você tem. Eles diferem ligeiramente no estilo regex. Por exemplo, se alterarmos o padrão '/a[0-9]*$' acima para usar + em vez de * para evitar corresponder a sozinho, então mlocate precisa de \+ e gnu apenas + .

Por exemplo, para corresponder a um diretório a e todos abaixo dele, você pode usar para ambas as versões

locate -r '/a\(/\|$\)'

Para mlocate, você pode prefexar --regex , que usa a sintaxe estendida

locate --regex '/a(/|$)'

Para fazer o mesmo para o gnu locate você precisaria adicionar a opção --regextype egrep , por exemplo.

    
por 21.02.2018 / 08:51
3

fzf é um localizador difuso de linha de comando de propósito geral.

e a página do github é link

    
por 12.02.2018 / 06:50
1

Os comandos padrão do Linux para isso são:

  • Comando

    find para procurar nomes de arquivos, por exemplo:

    • procure por arquivos chamados xyz em /tmp

      $ find /tmp -type f -name xyz
      
    • procure diretórios cujo nome contenha 'xyz' em /tmp

      $ find /tmp -type d -name '*xyz*'
      
  • comandos find e grep para procurar no conteúdo do arquivo, por exemplo:

    • encontre arquivos em /tmp que contenham xyz

      $ find /tmp -type f -exec grep -l xyz {} \;
      
por 12.02.2018 / 09:27