Comando find no Linux (localizar arquivos) [Guia Básico]

O comando find procura por arquivos e diretórios diretamente no sistema de arquivos. Dependendo do tamanho do sistema de arquivos, esse comando pode ser muito demorado.

Sua sintaxe básica é:

$ find [caminho] [expressão]

Você deve indicar um ponto de início da busca na árvore de diretórios do Linux. Se quiser que ele comece no raiz, indique “/“. Se quiser que a busca inicie a partir do diretório corrente, use como caminho “./” ou simplesmente ponto “.“. 

O find permite uma infinidade expressões como opções de busca, tais como nome, tamanho, data de criação de arquivo, data de acesso, por tipo de arquivo, permissões, etc.

Exemplos:

Procura pelo arquivo texto.txt a partir do raiz (/), do tipo arquivo (f):

$ find / -name texto.txt -type f  

Procura por todos os arquivos com extensão .txt a partir do diretório corrente (.):  

$ find . -name “*.txt”

Procura pelo diretório “usuarios” a partir do diretório corrente, independente se está escrito com letras maiúsculas ou minúsculas:

$ find . -iname usuarios -type d   

Procura por arquivos que não terminam com .html a partir do diretório corrente:

$ find . -type f -not -name “*.html”

O find também permite executar um comando com a lista de arquivos que ele encontrar. Neste exemplo o find copia todos os arquivos .mp3 encontrados a partir do diretório corrente para /tmp:

$ find . -type f -name “*.mp3” -exec cp {} /tmp/ \;

Apaga todos os diretórios BACKUP encontrados a partir do diretório corrente:

$ find . -type d -name BACKUP -exec rm -r {} \;

Procura os arquivos modificados nos últimos 7 dias:

$ find . -mtime -7 -type f

Procurar arquivos editados antes de 5 dias

$ find -mtime +5

Apaga os arquivos de backup com mais de 15 dias:

$ find /backup/ -type f -mtime +15 -exec rm -f {} \;

Apaga todos os arquivos objeto encontrados a partir diretório corrente:

$ find . -name "*.o" -type f -exec rm -f {} \;

Copia todos os arquivos alterados nos últimos 2 dias para o diretório /tmp:

$ find . -type f -mtime -2 -exec cp {} /tmp \;

Também é possível procurar por um arquivo mais recente que um determinado arquivo:

$ find -newer arquivo-fonte.c

Procura arquivos com permissão 0777:

$ find . -type f -perm 0777 –print

Procura todos os arquivos com mais de 50Mb:

$ find / -size +50M 

Pode-se combinar as opções, como para procurar arquivos com extensão .php alterados nas últimas 48 horas:

$ find -name '*.php' -mtime -2

O find também pode ser usado para criar uma lista dos arquivos de um diretório, que pode ser ordenada com o comando sort:

$ find | sort
.
./CapituloForm.php
./CapituloList.php
./Form.php
./List.php
./SubcapituloForm.php
./SubcapituloList.php

Conclusão

O comando find é uma ferramenta poderosa para encontrar arquivos, diretórios, baseados em nome, permissões, atributos, tamanho, propriedade (por usuário ou por grupo), etc. Ele pode ser usado para varrer o sistema para encontrar programas com permissões de suid, corrigir permissões, fazer backup, etc.

Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.

Gostou? Compartilhe