locate
é uma ferramenta UNIX usada para encontrar arquivos por nome no sistema de arquivos, que usa um banco de dados pré-fabricado de arquivos gerados (criado usando updatedb
). Usar locate
é mais rápido que find
, mas requer o banco de dados atualizado para encontrar arquivos recém-adicionados.
locate
foi criado em 1982, com as versões BSD e GNU Findutils derivando da implementação original.
plocate é novo (o primeiro lançamento estável saiu a menos de um ano), muito mais rápido que o locate
. É baseado em listas de postagem, dando pesquisas muito mais rápidas em um índice muito menor.
A ferramenta de linha de comando é uma substituição de para mlocate
(Merging Locate; um banco de dados de acesso restrito, mostrando apenas nomes de arquivos acessíveis ao usuário) em quase todos os aspectos, incluindo reutilização do banco de dados mlocate
(o plocate
cria seu próprio índice usando plocate-build
que lê o banco de dados feito por updatedb
) e é rápido em SSDs e HDDs.
O
plocate
funciona criando um índice invertido sobre trigramas (combinações de três bytes) nas strings de pesquisa, o que permite limitar rapidamente o conjunto de candidatos a uma lista muito pequena, em vez de digitalização linear a cada entrada. Faz quase toda a E/S de forma assíncrona usandoio_uring
se disponível (Linux 5.1+), que reduz o impacto da latência de busca em sistemas sem SSDs.
Para mostrar como o plocate
é rápido comparado ao mlocate
, o desenvolvedor do plocate
mostra este benchmark na página inicial da ferramenta em que o plocate é capaz de encontrar 2 arquivos de 27 milhões em apenas alguns milissegundos:
Além disso, como mlocate
, o plocate
mostra todos os arquivos que correspondem à consulta de pesquisa somente se eles estiverem visíveis para o usuário executando o comando, pulando todos os arquivos restritos.
O plocate está disponível nos repositórios oficiais de algumas distribuições Linux, incluindo Arch Linux/Manjaro e Debian (Bullseye e mais recente, bem como os backports Buster)/Ubuntu (21.04 e mais recente). Você pode instalá-lo usando:
sudo pacman -S plocate
plocate find files command linesudo apt install plocate
Para compilá-lo em outras distribuições do Linux Você precisará de um compilador C ++ 17, ZSTD (cabeçalhos de desenvolvimento) e Meson. No meu teste no Fedora, também tive que instalar o libatomic
para compilar o programa. Opcionalmente, você também vai querer liburing
e um kernel suportando io_uring
(Linux 5.1 ou mais recente) para melhor desempenho, especialmente se você não estiver usando um SSD. Outra dependência opcional é SystemD, que pode ser usada para executar o temporizador de atualização de banco de dados do plocate
integrado.
Para instalar as dependências de compilação do plocate
no Fedora (incluindo o opcional liburing
), use:
sudo dnf install libzstd-devel liburing-devel libatomic gcc-c++ meson
ou para compilá-lo em Ubuntu 20.04, por exemplo (observe que o Ubuntu 20.04 não tem liburing
em seus repositórios, portanto, o plocate
não usará todo o seu poder se você estiver usando um HDD regular), você precisará dessas dependências:
sudo apt install libzstd-dev meson build-essential
Depois de ter as dependências de compilação instaladas, Baixe e extraia o plocate
e use o terminal para navegar para sua pasta. Agora você pode prosseguir para compilar e instalar o plocate
no seu sistema:
meson objcd objninjasudo groupadd --system plocatesudo ninja installsudo systemctl enable plocate-updatedb.timer
Agora você pode começar a usar o plocate
. Antes de usá-lo pela primeira vez, crie seu banco de dados (índice de arquivo) usando o seguinte comando:
sudo updatedb
A primeira vez que você executa updatedb
, ele digitaliza todo o sistema de arquivos, e pode demorar um pouco. Depois deve ser muito mais rápido.
Agora use plocate
como você usaria locate
.
Pesquisando por um arquivo usando o plocate:
locate
Sendo MEU_ARQUIVO.EXT
o arquivo que você deseja encontrar.
Para mais opções, como ignorar maiúsculas/minúsculas, pesquisa com expressões regulares, etc., consulte a ajuda e a página man da ferramenta.
Temos artigos relacionados a esse tema aqui no blog, como um tutorial de como excluir, e como encontrar arquivos modificados no último n dias ou minutos usando find
Esse post foi traduzido do site LinuxUprising.com pela rtland.team.
Confira a versão original desse post em inglês:
plocate Is A Much Faster locate (Drop-In Replacement For mlocate)