Entendendo como realizar busca de arquivos no Linux com "find" e "locate"

Entenda como funcionam as buscas de arquivos no Linux. Este artigo irá te apresentar os comandos "find" e "locate" para encontrar qualquer arquivo, em qualquer lugar.

[ Hits: 2.032 ]

Por: Xerxes em 05/04/2024


Introdução



O comando FIND

O find é um dos comandos mais poderosos do Linux para localizar arquivos e diretórios em seu sistema. Com sua variedade de opções, você pode realizar buscas precisas e eficientes, encontrando o que precisa com rapidez e facilidade. Arquivos em um sistema é como uma enorme biblioteca com milhares de livros. Sem um sistema de organização, encontrar um livro específico seria como procurar uma agulha no palheiro. O find é como um bibliotecário experiente que te ajuda a navegar pelas estantes e encontrar o que você procura, ou como um detetive que fará buscas com base nas pistas dadas.

Primeiramente usaremos um exemplo e depois explicaremos mais sobre os parâmetros. Imagine que você está organizando as fotos da sua última viagem e precisa encontrar todas as fotos tiradas na praia.

1. Definindo o Diretório de Busca:

Comece por especificar o diretório onde as fotos estão armazenadas. Se as fotos estiverem na pasta Imagens, você usaria:

find Imagens

2. Filtrando por Tipo de Arquivo:

Em seguida, você pode filtrar os resultados para mostrar apenas arquivos. Para isso, use a opção -type f:

find Imagens -type f

3. Refinando a Busca por Data:

Lembre-se que você tirou as fotos da praia em um dia específico. Para refinar a busca, use a opção -mtime junto com o operador + para especificar quantos dias atrás as fotos foram modificadas. Se a viagem foi há 10 dias, você usaria:

find ./Imagens -type f -mtime +10

4. Incluindo o Nome do Arquivo:

Se você se lembrar de parte de nome específico de um arquivo de foto da praia, pode incluí-lo na busca com a opção -name. Por exemplo, se uma foto se chama "alguma-coisa" praiaou"alguma-coisa".jpg", você usaria:

find Imagens -type f -mtime +10 -a -name "*praia*.jpg"

Obs.: o uso do é opcional e permite combinar os critérios anteriores. Se você não usar o "-a", o comando find encontrará arquivos que correspondem a qualquer um dos critérios.

5. Executando a Busca:

Após definir todos os critérios, pressione Enter para executar a busca. O comando find listará todos os arquivos que correspondem aos seus critérios.

6. Interpretando os Resultados:

Cada linha da saída do comando find mostra o caminho completo para um arquivo que corresponde aos seus critérios. Exemplo de Saída:

./Imagens/2023-11-15/praia_bonita.jpg
./Imagens/2023-11-15/pôr_do_sol_na_praia.jpg
./Imagens/2023-11-15/crianças_brincando_na_areia.jpg


Neste exemplo, o comando find encontrou três arquivos de imagem que foram modificados há 10 dias e que contêm a palavra "praia" no nome. Para ficar mais claro, veremos alguns dos parâmetros básicos deste comando.

Diretório de busca:

. (ponto): O diretório atual.
/home/usuario: Diretório específico do usuário.
/: Raiz do sistema de arquivos (todo o sistema).

Nome do arquivo:

-name "nome_do_arquivo": Busca por nome exato.
-iname "nome_do_arquivo": Ignora maiúsculas e minúsculas.
-name "*parte_do_nome*": Busca por arquivos que contêm a string.

Tipo de arquivo:

-type f: Arquivos regulares (fotos, documentos, etc.).
-type d: Diretórios.
-type l: Links simbólicos.

Tamanho do arquivo:

-size +100M: Arquivos maiores que 100MB.
-size -10k: Arquivos menores que 10KB.
-size c 100M: Arquivos com tamanho exato de 100MB.

Data de modificação:

-mtime -1: Modificados no último dia.
-mtime +7: Modificados há mais de 7 dias.
-mtime +7 -14: Modificados entre 7 e 14 dias atrás.

Combinando parâmetros:

Para buscas mais precisas, combine os parâmetros com operadores lógicos:

-a: E (ambos os critérios devem ser verdadeiros).
-o: Ou (pelo menos um dos critérios deve ser verdadeiro).
!: Negação (inverte o resultado do critério).

Exemplo: encontrar todos os arquivos .txt maiores que 5MB modificados nos últimos 30 dias:

find . -name "*.txt" -size +5M -mtime +30

Você conseguiria criar um comando find para encontrar todos os arquivos MP3 modificados nos últimos 3 meses e que não estão na pasta Download:

sudo find / -type f -name "*.mp3" ! -path "/Downloads" -mtime +90

Explicação do comando:

sudo: executa o comando com privilégio de superusuário
ind /: Começa a busca a partir da raiz do sistema de arquivos (/).
-type f: Filtra por arquivos regulares/normais (arquivos MP3 são arquivos).
-name "*.mp3": Filtra por arquivos com a extensão .mp3.
! -path "/Downloads": Exclui da busca todos os arquivos que estão dentro da pasta Downloads.
-mtime +90: Filtra por arquivos modificados há mais de 90 dias (3 meses).

Exemplo de saída:

./Música/Artista1/Música1.mp3
./Música/Artista2/Música2.mp3
./Vídeos/Música3.mp3


Obs.: use a opção -help para obter mais informações sobre o comando find. Combine os parâmetros criativamente para encontrar exatamente o que você procura. O find é uma ferramenta poderosa, mas pode ser complexa. Comece com buscas simples e vá aumentando a dificuldade gradativamente.


O comando LOCATE

Outra forma de buscar arquivos no sistema é usando o locate. O locate é um índice rápido, como um dicionário de todos os arquivos do sistema. Ele oferece uma maneira mais rápida de encontrar arquivos, mas pode estar desatualizado se arquivos novos ou modificados recentemente não foram indexados.

Parâmetros Básicos:

locate nome_do_arquivo: Busca por nome do arquivo.
locate -i nome_do_arquivo: Ignora maiúsculas e minúsculas.
locate -r "expressão regular": Busca por expressões regulares.

Atualizando os índices: para garantir que o índice esteja atualizado, use o comando "updatedb".

CONCLUSÃO

Com o poder dos comandos find e locate em suas mãos, dificilmente você perderá um arquivo no Linux! Explore, domine e torne-se um mestre da busca em seu sistema. e lembre-se:

O find é mais preciso, mas pode ser mais lento.
O locate é mais rápido, mas o índice pode estar desatualizado.


Fontes:

https://superuser.com/questions/199472/what-is-the-difference-between-locate-and-find-in-linux
https://www.ionos.es/digitalguide/servidores/configuracion/comando-linux-find/
https://man7.org/linux/man-pages/man1/find.1.html
https://man7.org/linux/man-pages/man1/find.1.html
   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

O desenvolvimento da computação gráfica associado ao dos vídeo games

O mínimo que você precisa saber sobre o terminal (parte 1)

DOOM clássico (quase) vanilla e um pouco melhorado

Deixando o BunsenLabs cinza de novo

Crise de distro!

Leitura recomendada

BASH (Bourne - Again Shell) - De usuário para usuário

Instalando o Slackware em 15 minutos

openSUSE Evergreen

Hierarquia do Sistema de Arquivos GNU/Linux

Ferramentas Linux indispensáveis no reparo de computadores

  
Comentários
[1] Comentário enviado por maurixnovatrento em 23/06/2024 - 21:36h

Bom artigo.
______________________________________________________________________
Inscreva-se no meu Canal: https://www.youtube.com/@LinuxDicasPro
Repositório GitHub do Canal: https://github.com/LinuxDicasPro
Grupo do Telegram: https://t.me/LinuxDicasPro
Meu GitHub Pessoal: https://github.com/mxnt10


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts