Encontre arquivos rapidamente no terminal com um comando locate alternativo

Um alias bem simples permite criar uma versão alternativa do comando locate, para encontrar rapidamente arquivos e pastas a partir de trechos de seus nomes, aproveitando a base de dados do Spotlight.

Usuários que chegam ao Mac vindos de distribuições Linux frequentemente sentem a falta do comando locate, integrante do pacote GNU Findutils que localiza rapidamente arquivos e pastas a partir de um trecho do nome – por exemplo, você digita locate tunes e ele encontrará arquivos como:

/Users/augusto/Library/iTunes
/System/Library/PyObjC/Colloqui/iTunes Bot
Users/augusto/HandBrake/Arnaldo Antunes - Ao Vivo.mpeg

A diferença mais imediata entre o locate e o seu primo find é que o primeiro dá respostas quase instantâneas, porque não precisa pesquisar no disco: as pesquisas são feitas periodicamente pelo comando updatedb, indexando o disco inteiro, e aí o locate precisa apenas pesquisar nesse índice.

O locate vem pré-instalado no seu Mac, mas usá-lo na configuração default gera um erro pela ausência do índice, porque o updatedb nunca foi executado – a configuração que o executa periodicamente nas distribuições Linux não vem aplicada no OS X.

É possível configurar o updatedb1 para rodar periodicamente no Mac, mas ocorre que o OS X já tem sua própria base de dados atualizada para pesquisa semi-instantânea, que você usa sem nem mesmo perceber, a cada vez que acessa o Spotlight2 e apps que tiram proveito dos recursos dele, como o Alfred.

Você pode usar a base de dados do Spotlight em pesquisas no Terminal, por meio do comando mdfind – o manual do mdfind tem os detalhes.

Para replicar a funcionalidade básica do locate com o mdfind, substitua o locate tunes do meu exemplo anterior por mdfind -name tunes.

E se você tem dificuldade pra lembrar de comandos novos, como eu, insira a linha a seguir no .bash_profile ou outro arquivo de inicialização do seu shell: alias locate='/usr/bin/mdfind -name', e com isso você passará, a partir da próxima vez que abrir o Terminal, a contar com um comando locate que funcionará como um sinônimo do mdfind.

 
  1.  Mais especificamente, o comando seria sudo /usr/libexec/locate.updatedb

  2.  O acesso mais visível ao Spotlight é a Lupa no canto superior direito da tela.

Comentar

Comentários arquivados

Mais acessados:

Artigos recentes: