De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 05 de junho de 2017
Para localizar arquivos em nosso sistema podemos usar dois comandos: find
e locate
. Com o comando find
realizamos uma busca em tempo real,
já com o comando locate
a busca é feita a partir de uma base de dados
atualizada periodicamente, segundo nossa conveniência.
O banco de dados utilizado pelo comando locate
fica localizado em
/var/lib/mlocate/mlocate.db
.
O banco de dados é criado por um outro utilitário chamado updatedb
. Ao
ser invocado, este utilitário varre todo o sistema gerando uma listagem
completa que por sua vez é copiada para o banco de dados.
Como o banco de dados é uma imagem da situação do sistema em um determinado
momento, pode ocorrer que este banco de dados esteja desatualizado quando
consultado. Por esta razão, a frequencia de atualização irá depender das
necessidades de uso do utilitário. Dependendo do tamanho de seu sistema,
você pode agendar, via cron, a execução do updatedb
a cada hora, a cada
dez minutos, enfim, com a frequencia que for mais conveniente.
No exemplo abaixo de crontab, o comando updatedb
será executado a cada
hora cheia.
# m h dom mon dow usercommand 0 * * * * root updatedb
O modo como o comando updatedb
atualiza o banco de dados é regulado pelo
arquivo de configuração /etc/updatedb.conf
:
PRUNE_BIND_MOUNTS="yes" # PRUNENAMES=".git .bzr .hg .svn" PRUNEPATHS="/tmp /var/spool /media /home/.ecryptfs /var/lib/schroot /backup" PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre tmpfs usbfs udf fuse.glusterfs fuse.sshfs curlftpfs ecryptfs fusesmb devtmpfs"
A variável PRUNEPATHS
define os diretórios que serão ignorados na
indexação. Já a variável PRUNEFS
identifica os tipos de partições que
serão ignorados. No meu sistema atual, LinuxMint, eu acrescentei apenas o
diretório /backup
para ser ignorado, pois na maior parte dos casos
o conteúdo deste diretório não me interessa.
Buscar por um arquivo é bastante simples. Basta fornecer o argumento de
busca ao comando locate
:
$ locate http
Com a diretiva -0
o resultado será exibido em apenas uma linha. Esta
diretiva é particularmente interessante quando se deseja processar a saída
do comando em um shell script:
for f in `locate -0 http` do comando1 comando2 ... done
Podemos também obter do comando locate
apenas o número de ocorrências do
termo pesquisado:
$ locate -c http
Como o comando updatedb
atualiza um arquivo que se encontra no diretório
/var/lib/mlocate
, ele deve ser executado pelo usuário root
. Entretanto,
podemos também criar uma versão customizada, contendo apenas os arquivos que
interessam. Por exemplo, para criar uma versão contendo apenas a listagem
dos arquivos contidos a partir do diretório /home
, basta emitir o
comando abaixo:
$ updatedb -l 0 -o $HOME/.mlocate.db -U /home
Para fazer uma consulta utilizando a versão local do banco de dados, use a seguinte sintaxe:
$ locate -d $HOME/.mlocate.db [argumento de busca]
Muito importante, é possível fazer buscas ignorando se as letras são maiúsculas
ou minúsculas. Para isto basta fornecer a diretiva -i
:
$ locate -i http
O comando locate
na verdade é um link lógico que aponta para o comando
mlocate
:
$ ls -l /etc/alternatives/locate
lrwxrwxrwx 1 root root 16 Jun 14 2016 /etc/alternatives/locate -> /usr/bin/mlocate
Os comandos mlocate
e updatedb
fazem parte do pacote mlocate
.
Por padrão, este software já vem instalado em sistemas Debian GNU/Linux
e derivados.
Citando o documento Package: mlocate (0.26-1):
Existem várias implementações do locate: a original, encontrada nas findutils da GNU, slocate e mlocate. As vantagens do mlocate são:
Ao instalar o mlocate, o binário /usr/bin/locate irá apontar para o mlocate através do mecanismo de alternativas. Após a instalação, pode desejar executar o /etc/cron.daily/mlocate manualmente para criar a base de dados, pois caso contrário o mlocate não funcionará até ser executado pelo cron (uma vez que o mlocate não usa a mesma base de dados que o locate). Também pode querer remover o pacote "locate" para não ter duas bases de dados distintas a serem actualizadas regularmente no seu sistema.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários