Outras alternativas que não exigem um índice incluem:
ripgrep
link
ag
também conhecido como pesquisador de prata: link
ack
link
Existe uma maneira de indexar um arquivo ou uma árvore de arquivos do console para que a pesquisa de substrings possa ser feita mais rapidamente do que o grepping simples?
Eu não preciso necessariamente de suporte para expressões regulares, embora seja bom ter insensibilidade a maiúsculas e minúsculas.
Estou procurando um utilitário de console simples que funcione de maneira semelhante a locate/slocate/mlocate
, mas, em vez de nomes de arquivos, indexe o conteúdo de arquivos com tipos mime específicos em um local configurável.
Até agora, a única solução "mais rápida que a grep" que encontrei é fgrep
restrita a ANSI em vez de UTF-8 (de link ) - enquanto fornece uma aceleração impressionante, ainda é muito lento para arquivos grandes. Gostaria de saber se existe alguma maneira "barata" de criar um índice e pesquisar contra ele.
Estou considerando whoosh como uma opção, mas isso exigiria codificação extra.
Não estou interessado em aplicativos de indexação no nível do sistema, como o Spotlight on Mac ou seus correspondentes Linux, já que estou procurando algo granular no nível de arquivo ou de subpasta.
Os utilitários de linha de comando de pesquisa de código do Google (escritos em Go) se encaixam no caso de uso descrito.
No debian / ubuntu, ele pode ser instalado com
sudo apt install codesearch
Para compilar a partir da fonte:
Se ainda não estiver presente, instale primeiro o ambiente golang e defina a variável GOPATH
:
sudo mkdir -p /usr/local/go
sudo chown myusername /usr/local/go
## normally you'd put this in your ~/.bashrc
export GOPATH=/usr/local/go
## on ubuntu/debian:
sudo apt install golang
## on osx
brew install golang
Em seguida, crie cindex
e csearch
:
go get github.com/google/codesearch/cmd/...
Depois de instalar a partir da origem, você terá cindex
e csearch
sob seu $GOPATH/bin
- mova-os para algum lugar abaixo de $PATH
ou adicione $GOPATH/bin
ao seu $PATH
e atualize / reinicie seu shell .
cindex myproject_dir
O índice será criado em ~/.csearchindex
.
Agora você pode pesquisar o índice:
csearch sausage-and-spam
Tags grep search search-indexing