Existe um mecanismo de busca de arquivos como "Tudo" no Linux?

46

No Windows, existe um bom mecanismo de busca de arquivos chamado Tudo , que é (ao contrário find) muito rápido e (ao contrário locate) sempre retorna resultados atualizados. AFAIK funciona preenchendo um banco de dados do diário NTFS (não funciona com outros sistemas de arquivos).

Gostaria de saber se há algo semelhante (não me importo com a GUI; meu ponto é a velocidade e a garantia atualizada) para Linux (ext3 ou ext4); Pesquisei no Google, mas não encontrei nada. Pode algo assim ser feito ou alguém está trabalhando nisso?

maaartinus
fonte
2
O que eu mais gosto no Everything é que ele não apenas é instantâneo, mas também funciona para várias partições, como sistemas de inicialização múltipla com seis instalações do Windows e várias partições de dados. Eu gostaria de ter uma pesquisa Linux que funcione em várias partições Linux, não apenas na partição única.
Arch Parsons
Existem muitas variantes de localização (mlocate, slocate, rlocate, ....) com suas próprias características (atualização incrementalb, indexação em tempo real ou segura, ...). Todos são altamente configuráveis ​​(páginas de manual do updatedb.conf e do local)
Manu H

Respostas:

30

Você pode dar uma olhada no rlocate , uma reimplementação da localização que está sempre atualizada. Outro projeto interessante é o recoll, que também suporta indexação em tempo real e permite que você (como o beagle) faça pesquisas de texto completo. Finalmente, devo mencionar o doodle, que também suporta indexação em tempo real. Para o doodle, existem algumas interfaces interessantes, como o peixe-gato .

Observe que você também pode tornar (r) localizar resultados clicáveis ​​usando, por exemplo, urxvt como emulador de terminal e escrevendo algo como

URxvt.perl-ext: default,matcher URxvt.urlLauncher: /usr/bin/gnome-open     
URxvt.matcher.button: 1 URxvt.matcher.pattern.1: /.*

(e executando xrdb -load ~/.Xdefaultsdepois)

aluna
fonte
1
Eu acho que essa resposta deve ser aceita. rlocatejá faz uma resposta completa.
phunehehe
4
O que há em 2017? O rlocate menciona o Linux 2.6 e nenhum pacote Ubuntu 16.04. recordar parece interessante e atualizado, embora exagero para a minha necessidade. O doodle tem o pacote Ubuntu a partir do 16.04, portanto, pode ser uma opção.
Stéphane Gourichon 19/03/19
Por que a recuperação é um exagero, você também pode executar a recuperação na linha de comando. Ele também se integra bem ao kde e à unidade, se você quiser.
estudante de
Meu maior problema com o peixe-gato é a incapacidade de interagir com os arquivos - se eu quiser copiar 20 arquivos dos resultados da pesquisa, preciso Show in File Manager20 vezes.
Annan
A documentação do rlocate possui uma lista de requisitos de "Configuração do kernel" que eu não sei como atender, e se eu descompactá-lo e executá-lo, ./configuredisseram-me que devo "instalar o pacote com fontes completas do kernel". Essa ferramenta parece estar fora do alcance de não-gurus.
Qwertie 30/10/19
7

Eu também estava procurando a ferramenta "Search Everything" para linux e descobri o "Search Monkey" no repositório Ubuntu. ADORO!

É leve, carrega pesquisas rápidas e curinga, produz toneladas de resultados instantaneamente, além de filtros e métodos de pesquisa avançados.

Agora eu tenho minha ferramenta de pesquisa "Tudo" de volta para linux!

Charles
fonte
O link está quebrado
Chris Nevill
4

Idéia interessante para implementar isso enraizada no sistema de arquivos, mas nada disso existe para o meu conhecimento. Além de alguns complementos que tentam se aprofundar o suficiente nas camadas superiores do fs para obter dados antecipados (atualização: tudo se encaixa nessa categoria), receio que você esteja limitado aos processos menos satisfatórios de indexação regular.

O que pode estar mais próximo do que você está procurando pode ser o sistema de arquivos virtual libferris.

No mundo da indexação, você pode querer dar uma olhada em visão , que, pelo menos, é capaz de atualizar e acrescentar seu índice.

Atualização: Acabei de ler as coisas sobre "Tudo", e também não parece ser inerente ao FS, então a libferris não está tão longe assim, além de permitir indexar o conteúdo, não apenas os nomes de arquivos. Satisfaz a sua necessidade de estar sempre atualizado.

Tatjana Heuser
fonte
A lista de discussão Ferris secou desde 2007 e não continua além de 2010. Há um repositório do github que não estava ativo entre mi-2016 e março de 2017 github.com/monkeyiq/ferris/commits/master . Talvez continue.
Stéphane Gourichon 19/03/19
2

Você pode usar o locatecomando e, se desejar atualizar seu banco de dados, execute o seguinte comando:

# updatedb

Este comando atualiza o banco de dados de localização em alguns segundos

RobotMan
fonte
implementação de exemplo interativo: github.com/phil294/linux-locate-everything
phil294
2

Você verificou a Pesquisa com raiva . Alega em sua descrição que é como tudo. O FSearch também afirma o mesmo.

raio azul
fonte
1
Considerando quantos resultados de pesquisa você aponta para o FSearch quando pesquisa no Google para o Evernote alternativa para Linux, estou surpreso por você ser o único que publicou aqui.
Ghos3t 28/10/19
1

Deve ser possível criar algo parecido com isto em algumas linhas de código usando o inotify (há também o pacote inotify-tools que permite implementar isso usando scripts de shell).

(Eu ficaria muito surpreso que qualquer ferramenta desse tipo fosse retirada do diário - mais provavelmente é implementada na camada do sistema de arquivos virtual)

symcbean
fonte
1
Não tenho certeza se inotifypoderia ser útil aqui, pois não é recursivo. Criar relógios para toda a árvore é simples, mas o kernel pode lidar com muitas dezenas de milhares deles? Mesmo que possa, isso não parece uma maneira eficaz para mim.
Maaartinus
1

btrfsimplementou o find-newcomando contra subvolumes por anos. Se você mantiver uma árvore de instantâneos relativamente atualizada, ela poderá ser usada para monitorar atomicamente um sistema de arquivos para todas as alterações com pouco esforço.

Você usaria como:

btrfs sub find-new /chk/path [gen-id]

Você pode obter o gen-id necessário para comparação com o mesmo comando, mas usando um gen-id falso. Há mais informações aqui .

mikeserv
fonte
1

Interface da interface do usuário para o comando de localização que funciona quase da mesma forma que Tudo:

https://github.com/AlexTuduran/Locator/releases

Alex Tuduran
fonte
1
Isso parece ter como base a premissa falsa que locatenunca é atualizada automaticamente.
roaima
Por favor desenvolva. O que você quer dizer com localizar sendo atualizado?
Alex Tuduran 11/09/2015
Seu projeto GitHub afirma que o comando Unix locateusa o mesmo princípio, exceto que o banco de dados não é atualizado automaticamente . O locatepacote inclui uma crontarefa que atualiza automaticamente o banco de dados.
roaima 11/09/2015
Se isso for verdade, estará apenas ajudando o objetivo da ferramenta. A atualização automática do banco de dados dispensa o usuário de executar outra tarefa. O usuário ainda pode atualizar o banco de dados explicitamente se precisar de atualizações imediatas. Ou qual é a preocupação aqui em relação à premissa falsa?
Alex Tuduran
1

Estou usando o Angry Search em um Raspberry Pi 3 B + executando o Stretch e funciona bem. É realmente muito rápido, assim como Pesquisar tudo no Windows. É muito bom poder encontrar arquivos tão rapidamente.

lulu
fonte