Buscando arquivos com locate, versão macOS

 mac

Neste post escrevi como instalar e usar o comando locate em sistemas baseados em Debian e RedHat

Nestas últimas semanas tive o meu segundo contato com Macs - o Donalds é sempre - da Apple, peguei emprestado de um amigo para fazer um trabalho.

Precisei procurar arquivos no disco e não consegui usar o comando locate. Tive de procurar diversas vezes como fazer, por que eu sempre esquecia o comando (de atualizar, por que de buscar é igual), então esta nota é um guia para a próxima vez que eu precisar.

Abre parênteses

Enquanto eu escrevia o post, fiz uma reflexão sobre tudo isso e o jeito macOS user de ser é usando o Spotlight, pra isso aperte command+espaço e digite o nome do arquivo que deseja procurar. Uma vez que o Spotlight já indexa os arquivos no disco.

Fecha parênteses

Voltando ao modo Linux, hardcore de ser (lembrando que isso é uma escolha e não uma regra). Caso deseje que o índice seja atualizado em background, enquanto seu sistema é executado, o comando abaixo é necessário:

$ sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist

Nota: com.apple.locate.plist é um arquivo de configuração para o launchd iniciar um processo e gerenciar ele, seria algo como uma cron no Linux e que executa o processo do updatedb de tempos em tempos.

A velocidade de indexação pode demorar, considerando tamanho, quantidade de arquivos e estado do HD (risado ou danificado por alguma queda ou batida).

Nota: Não inicie serviços, se o computador não for seu. Obrigado Gabriel e eu não iniciei isso no seu Mac.

Para atualizamos os bancos de indexação, utilizamos o comando:

$ sudo /usr/libexec/locate.updatedb

Você pode criar um link e simplificar os próximos usos.

$ sudo ln -s /usr/libexec/locate.updatedb /usr/local/bin/updatedb

Nota: é uma convenção (Linux/Unix, macOS eu desconheço) de instalar tudo que não é nativo do seu sistema de pacotes e/ou compilado manualmente em /usr/local e proprietário em /opt

Uma dica interessante se não quiser criar link no seu sistema é usar um alias, insira isso no seu .bashrc ou equivalente (.zshrc), digite o comando:

alias updatedb="/usr/libexec/locate.updatedb"

Feche e abra novamente seu terminal que o comando fica disponível.

$ sudo updatedb

Precisa do sudo, por que a pasta onde fica o banco, é somente leitura e precisa de permissão para ser alterada:

$ ls -l /var/db/locate.database
-r--r--r--  1 nobody  wheel  10937015 May 28 00:47 /var/db/locate.database

Nota: tentei executar sem e deu erro de permissão, de qualquer modo, vale um teste na sua máquina.

Agora podemos fazer a busca normalmente:

$ sudo locate -i <padrao-de-busca>

Lembrando que:

  • senão usar sudo para fazer a busca, somente será procurado em pastas que você tenha acesso, com sudo ele busca o sistema inteiro.
  • a opção -i é para case insensitive, ou seja, ignorar maiusculo e minusculo

Referência


comments powered by Disqus