Como procurar e localizar arquivos no Linux: guia completo usando terminal 

Yuri Matheus
Yuri Matheus

Compartilhe

O que é e como procurar um arquivo no Linux pelo terminal 

Se você precisa localizar um arquivo no Linux rapidamente ou não sabe em qual pasta ele está, existem comandos específicos do terminal para isso.  

Entre os comandos mais usados para procurar arquivos no Linux pelo terminal estão o `find` e o `locate`.  

Em situações em que precisamos encontrar arquivos rapidamente e temos apenas o terminal disponível, é importante conhecer esses comandos. 

Neste artigo, veja como procurar arquivos no Linux, localizar pastas e encontrar qualquer documento usando o terminal, passo a passo. 

Banner da Escola de DevOps: Matricula-se na escola de DevOps. Junte-se a uma comunidade de mais de 500 mil estudantes. Na Alura você tem acesso a todos os cursos em uma única assinatura; tem novos lançamentos a cada semana; desafios práticos. Clique e saiba mais!

Como procurar arquivos no Linux usando o comando find 

Para utilizar o comando `find` no Linux, temos que seguir uma sequência. Primeiro o comando `find` seguido do local da busca, que, para ser todo o meu sistema, é utilizada a barra "/", e, por fim, `-name` definindo o nome do que vai ser buscado. 

Seguindo para um exemplo: sabendo que o nome dos arquivos contém `pagamentos`, podemos passar esse critério ao comando." 

find / -name pagamentos 

Acima, pesquisamos um arquivo chamado "pagamentos" em todo o sistema. Se quiser limitar a busca apenas à sua pasta de usuário para otimizar, troque o `/` por `~/`. 

Conseguimos localizar alguns arquivos, mas nenhum desses é o arquivo que quero ainda… 

O arquivo que eu quero tem uma extensão CSV. Então vamos informar isso ao `find`. 

find / -name pagamentos.csv 

Isso resolve o problema em parte, mas há um detalhe: pode haver mais de um arquivo de pagamentos no sistema. Por que apenas um foi listado? 

Uma possível razão é que o nome do arquivo está escrito utilizando letras maiúsculas. 

O programa `find` diferencia letras maiúscula e minúsculas, ou seja, ele é case-sensitive

Nesse contexto, existem algumas complicações que podem ocorrer, como: 

  • Início da palavra com letra maiúscula: Pagamentos.txt; 
  • Início da palavra com letra minúscula: pagamentos.txt; 
  • Letras maiúsculas no meio da palavra: pAgAmenTos.txt. 

Como fazer para o `find` listar arquivos ignorando se as letras estão em maiúsculas ou minúsculas? 

Como localizar arquivos no Linux ignorando maiúsculas e minúsculas 

Para ignorar a diferença entre maiúsculas e minúsculas, utilize o parâmetro `-iname` ao invés de `-name` no comando `find`. Ficando, assim: 

find / -iname pagamentos.csv 

Agora vamos testar o comando e observar o seu retorno, que deve ser de três arquivos: 

Após testar o comando, podemos notar que somente alguns arquivos aparecem. Há outros arquivos que contêm a palavra "pagamento" no nome dentro do sistema, mas não foram listados. Como localizá-los? 

Para isso será necessário utilizar caracteres curingas (wildcards) ou algumas expressões regulares para ampliar a busca. 

Mas quais são essas expressões? 

Como procurar por parte do nome de um arquivo no Linux 

Sabendo que o nome do arquivo contém a palavra "pagamento", podemos pedir ao `find` que busque, em todo o sistema (`/`) e sem diferenciar maiúsculas de minúsculas (`-iname`), por arquivos que comecem com "pagamento" e sejam seguidos por qualquer caractere. 

O uso do asterisco ao fim do nome indica que ele pode ser seguido de qualquer coisa, sejam espaços em branco, outras palavras, letras, números … 

Observe que a busca retornou tanto arquivos quanto diretórios que continham essa parte no nome. 

O asterisco pode ser usado em qualquer parte da busca, inclusive antes ou depois da palavra desejada. Veja este exemplo: 

find -iname *pagamento* 

Dessa forma conseguimos obter todas as combinações com a nossa string de busca. 

Além do asterisco, você pode usar outros curingas (wildcards) como `?` (substitui um único caractere), `[a-z]` (intervalo de caracteres) ou outras combinações.  

Note que o `find` usa glob patterns (curingas de shell), não expressões regulares completas por padrão. Para usar regex verdadeiras, utilize as opções `-regex` ou `-iregex`. 

Até o momento aprendemos a buscar arquivos em todo o sistema. Mas e quando queremos realizar uma busca em um determinado lugar, como, por exemplo, uma pasta? Se eu quisesse buscar somente os arquivos do diretório financeiro, como posso fazer? 

Como procurar arquivos em uma pasta ou diretório específico no Linux 

Da mesma maneira que pedimos para o `find` procurar arquivos em todo o meu sistema, podemos especificar uma pasta específica e ele buscaria apenas os arquivos desse diretório. 

Bem, queremos que todos os arquivos de pagamento que estão na pasta `financeiro`, logo vamos dizer isso para o `find` informando o caminho até o diretório. 

find /compartilhamento/financeiro -iname *pagamento* 

Conseguimos todos os resultados que contêm "pagamento" como parte do nome. 

Esse tipo de consulta é importante, pois, caso o computador tenha muitos arquivos, o programa não precisará ver em todos os locais possíveis no sistema, somente na pasta indicada. Isso otimiza o tempo de retorno da busca, já que o programa não terá que varrer todo o sistema. 

Além do `find`, existe também o utilitário `locate` para realizar buscas no sistema. 

Como localizar arquivos no Linux usando o comando locate 

O uso do `locate` é semelhante ao `find`. Basta informar o nome do arquivo ou parte do nome. Por exemplo, para localizar arquivos relacionados a pagamentos: 

locate pagamentos 

O `Locate` exibe rapidamente onde o arquivo pode ser encontrado. Ele utiliza um banco de dados próprio, por isso, geralmente, retorna resultados mais rapidamente do que o `find`. 

Ou seja, ao realizar uma pesquisa com o `locate`, a procura é feita em seu catálogo (banco de dados) de arquivos, enquanto o `find` realiza a varredura diretamente no sistema de arquivos a cada execução. 

É possível notar que, usando o `locate`, aparecem outros resultados que também contém "pagamentos" no nome. Isso ocorre porque, por padrão, o `locate` considera automaticamente a busca por qualquer parte do nome do arquivo. 

Assim, o resultado do `locate pagamentos` será semelhante ao de `find / -name *pagamentos*`, variando apenas a ordem dos resultados. 

A saída é a mesma, apenas em uma ordem diferente. 

Também podemos ignorar (`-i`) se as letras estão em caixa alta ou baixa. 

locate -i pagamentos 

E novamente ele nos retornou a localização de nosso arquivo, não apenas de um, mas de todos que continham a string de busca no nome. 

Como teste, crie um arquivo de texto simples chamado `teste.txt` em qualquer diretório e utilize o comando `locate` para tentar localizá-lo. 

locate teste 

Pode ser que o arquivo recém-criado não seja listado imediatamente. Por que isso acontece? 

Por que o comando locate pode não encontrar arquivos no Linux? 

Em resumo: o locate é ótimo para localizar arquivos no Linux rapidamente, mas é necessário sempre atualizar o banco de dados antes de pesquisar arquivos recém-criados. 

Para que o banco de dados seja atualizado, temos que utilizar o comando `updatedb`. Para isso devemos estar logados como root, ou utilizar `sudo` na frente do comando. 

Assim, se fizermos novamente a busca, ela já retornará o nosso arquivo: 

Com a atualização do banco de dados, o comando `locate` já apresenta os resultados esperados. 

Resumo: como procurar e localizar um arquivo no Linux pelo terminal 

Agora você já sabe como procurar e localizar arquivos no Linux pelo terminal, seja usando o comando find ou locate, de maneira eficiente. Aprendeu também diferentes formas de localizar um arquivo no Linux usando o nome completo, parte do nome ou pesquisando em pastas específicas. 

Para isso, existem alguns programas, como o `find` e o `locate`. Vimos como utilizar cada um, seu funcionamento e suas diferenças. 

Como se desenvolver no tema?

Aprenda a trabalhar com o sistema de forma prática, explorando desde a navegação e manipulação de arquivos até o uso eficiente de ferramentas como find, locate e outros recursos essenciais para o dia a dia.

Com uma base sólida, você ganha mais autonomia, agilidade e confiança para atuar em ambientes reais, seja em desenvolvimento, dados ou infraestrutura.

Se você tem interesse em aprofundar seus conhecimentos em Linux, a Alura oferece uma trilha sobre o sistema, abordando desde o uso do terminal até a filosofia Open Source. Além disso, você pode se aprofundar ainda mais na trilha Certificação LPI Linux Essentials que apresentará tudo necessário para essa certificação inicial do sistema Linux.

Yuri Matheus
Yuri Matheus

Yuri é desenvolvedor e instrutor. É estudante de Sistemas de Informação na FIAP e formado como Técnico em Informática no Senac SP. O seu foco é nas plataformas Java e Python e em outras áreas como Arquitetura de Software e Machine Learning. Yuri também atua como editor de conteúdo no blog da Alura, onde escreve, principalmente, sobre Redes, Docker, Linux, Java e Python.

Veja outros artigos sobre DevOps