Linux Locate Command for Beginners (8 Exemplos)

Embora encontrar seja sem dúvida um dos mais populares e poderosos utilitários de linha de comando para pesquisa de arquivos no Linux, não é rápido o suficiente para situações em que você precisa de resultados instantâneos. Se você quiser pesquisar um arquivo no seu sistema através da linha de comando, e velocidade é a prioridade máxima, então há outro comando que você pode usar: Locate.

Neste tutorial, vamos discutir o comando locate usando exemplos fáceis de entender. Por favor note que todas as instruções/exemplos aqui mencionados foram testados no Ubuntu 16.04 LTS, e a versão locate que usamos é 0.26.

Como usar o comando locate no Linux

O comando locate é muito fácil de usar. Tudo que você tem que fazer é passar o nome do arquivo que você quer procurar.

locate 

Por exemplo, se você quiser procurar por todos os nomes de arquivos que têm a string ‘dir2’ neles, então eu posso fazer isso usando locate da seguinte maneira:

Note: O comando ‘locate dir2’ (sem asteriscos) também fará como locate implicitamente substitui o nome que você passa (diga NAME) por *NAME*.

Como funciona o comando locate, ou, porque é tão rápido

A razão pela qual locate é tão rápido é porque não lê o sistema de ficheiros para o nome do ficheiro ou directório procurado. Na verdade refere-se a uma base de dados (preparada pelo comando updateb) para encontrar o que o utilizador procura e baseado nessa pesquisa, produz a sua saída.

Embora esta seja uma boa abordagem, tem a sua quota-parte de desvantagens. A questão principal é que depois de cada novo arquivo ou diretório criado no sistema, você precisa atualizar a base de dados da ferramenta para que ela funcione corretamente. Caso contrário, o comando não será capaz de encontrar arquivos/diretórios que são criados após a última atualização da base de dados.

Por exemplo, se eu tentar encontrar arquivos com nomes contendo a string ‘tosearch’ no diretório ‘Downloads’ do meu sistema, o comando find produz um resultado na saída:

Mas quando eu tento fazer a mesma busca usando o comando locate, ele não produz nenhuma saída.

Isto significa que as buscas de localização na base de dados não foram atualizadas depois que o arquivo foi criado no sistema. Então, vamos atualizar a base de dados, o que pode ser feito usando o comando updateb. Aqui está como você faz isso:

sudo updatedb

E agora quando eu executo o mesmo comando de localização novamente, ele mostra arquivos na saída:

Simplesmente, após um arquivo ou diretório ter sido removido, você precisa ter certeza de que a base de dados de localização foi atualizada, caso contrário, o comando continuará mostrando o arquivo em sua saída quando pesquisado.

Como fazer a localização imprimir o número ou contagem das entradas correspondentes na saída

Como vimos, o comando locate produz o nome dos ficheiros correspondentes juntamente com os seus caminhos completos ou absolutos na saída. Mas se você quiser, você pode fazer a ferramenta suprimir toda essa informação, e apenas imprimir o número ou a contagem das entradas correspondentes. Isto pode ser feito usando a opção de linha de comando -c.

Como forçar a localização para imprimir apenas aquelas entradas que correspondem aos ficheiros existentes

Como já discutimos anteriormente neste artigo, se um ficheiro for removido do sistema, então até que actualize novamente a base de dados de localização, o comando irá continuar a mostrar esse nome de ficheiro na saída. Para este caso específico, entretanto, você pode pular a atualização da base de dados, e ainda ter resultados corretos na saída usando a opção de linha de comando -e.

Por exemplo, eu removi o arquivo ‘filetosearch.txt’ do meu sistema. Isto foi confirmado pelo comando find, que não era mais capaz de pesquisar o arquivo:

Mas quando eu realizei a mesma operação usando locate, ele ainda estava mostrando o arquivo na saída:

E nós sabemos porquê – porque o banco de dados do locate não foi atualizado após o arquivo ter sido excluído. Entretanto, usando a opção -e fez o truque:

Aqui está o que a página de manual de localização diz sobre esta opção: “Imprimir apenas entradas que se referem a ficheiros existentes no momento em que o comando locate é executado”

Como fazer para que o comando locate ignore as distinções entre maiúsculas e minúsculas

Por defeito, a operação de pesquisa que o comando locate executa é sensível a maiúsculas e minúsculas. Mas você pode forçar a ferramenta a ignorar as distinções entre maiúsculas e minúsculas usando a opção de linha de comando -i.

Por exemplo, eu tenho dois arquivos no meu sistema, chamados ‘newfiletosearch.txt’ e ‘NEWFILETOSEARCH.txt’. Então, como você pode ver, os nomes dos arquivos são os mesmos, apenas que seus casos são diferentes. Se você pedir para localizar, digamos, “*tosearch*”, então ele mostrará apenas o nome em minúsculas na sua saída:

Mas usando a opção de linha de comando -i força o comando a ignorar o caso, e ambos os nomes de arquivos são produzidos na saída:

Como separar as entradas de saída com ASCII NUL

Por padrão, as entradas de saída que o comando locate produz são separadas usando o caractere newline (\n). Mas se você quiser, você pode mudar o separador, e ter o NUL ASCII em vez de uma nova linha. Isto pode ser feito usando a opção de linha de comando -0.

Por exemplo, eu executei o mesmo comando que usamos na última seção acima, mas adicionei a opção de linha de comando -0:

Então você pode ver que o separador de nova linha não está mais lá – ele foi substituído pelo NUL.

Como ver informação sobre a base de dados de localização

Caso queira saber qual a base de dados que está a utilizar, bem como outras estatísticas sobre a base de dados, utilize a opção -S da linha de comandos.

Como procurar um nome de ficheiro exacto usando locate

Por defeito, quando procura um nome de ficheiro usando locate, então o nome que passa – digamos NOME – é implicitamente substituído por *NOME*. Por exemplo, se eu pesquisar por um nome de arquivo ‘testfile’, então todos os nomes que combinam com *testfile* são produzidos na saída:

Mas e se o requisito for pesquisar arquivos com nomes exatamente iguais a ‘testfile’? Bem, neste caso, você terá que usar expressões regulares, que podem ser habilitadas usando a opção -r da linha de comando. Então, aqui está como você pode procurar por apenas ‘testfile’ usando expressões regulares:

locate -r /testfile$

Se você é novo em expressões regulares, vá para aqui.

Conclusion

Locate oferece muito mais opções, mas as que discutimos aqui devem ser suficientes para lhe dar uma idéia básica sobre o utilitário de linha de comando, assim como para começar. Aconselhamos que primeiro tente todas as opções descritas aqui na sua máquina Linux, e depois mude para outras que possa encontrar na página de manual do utilitário.

Deixe uma resposta

O seu endereço de email não será publicado.