Base de Conhecimento

Comando find: como achar arquivos e pastas na VPS

  • find, linux, vps, terminal, arquivos, busca
  • Usuários acharam útil: 0

Aprenda o comando find na VPS: a sintaxe, a busca por nome, tipo, tamanho e data, como limitar a busca, o uso de -exec e -delete e como esconder mensagens de erro.

Por Redação Eleven Host · @robson.direitodigital · 30 de outubro de 2026 · 9 min de leitura

Arte da Eleven Host: janela de terminal com o título: Comando find: como achar arquivos e pastas na VPS

Capa da Redação Eleven Host para o guia: Comando find: como achar arquivos e pastas na VPS Arte: Eleven Host

O comando find procura arquivos e pastas por nome, tipo, tamanho ou data. A forma mais simples é find /caminho -name "arquivo": você diz onde procurar e o que procurar. Este guia mostra os testes, como limitar a busca e como agir sobre o que foi achado.

Como o find funciona

Quem administra uma VPS por SSH pode precisar achar um arquivo de configuração, um log antigo ou um arquivo grande. Segundo a página de manual do find, a forma geral é find [opções] [ponto de partida] [expressão]. Primeiro vem a pasta onde a busca começa, depois a expressão, que reúne os testes (o que procurar) e as ações (o que fazer com o resultado). Um exemplo, com um caminho fictício:

find /var/www -name "*.log"

O find começa em /var/www, desce pelas pastas que estão dentro dela e escreve o caminho de cada arquivo cujo nome termina em .log. Quando falta um operador entre dois testes, a página de manual diz que vale o E: o arquivo precisa passar nos dois.

Primeiro o ponto de partida, depois a expressão. O find mostra o caminho completo de cada item que passou nos testes.

Buscar por nome: -name e -iname

O teste -name compara o padrão com o nome do arquivo, sem as pastas do caminho, e aceita os curingas do shell: * para uma sequência de caracteres e ? para um caractere. O -iname funciona igual, mas ignora a diferença entre maiúsculas e minúsculas:

find /home -name "*.jpg"

find /home -iname "*.JPG"

O primeiro acha só os nomes escritos com .jpg em minúsculas. O segundo acha .jpg, .JPG e variações misturadas.

Por que as aspas no curinga

Escreva o padrão entre aspas, como em -name "*.log". Sem as aspas, a página de manual cita um erro que pode acontecer: find: paths must precede expression.

Combinar testes: E, OU e NÃO

O -o significa OU, e o ! nega um teste. Para misturar os dois com o E padrão, use parênteses, protegidos com barra invertida para o shell não interpretá-los:

find . -type f \( -name "*.jpg" -o -name "*.png" \)

find . -type f ! -name "*.php"

O primeiro lista arquivos .jpg ou .png. O segundo lista arquivos que não terminam em .php. A página de manual alerta para o motivo dos parênteses: em find . -name afile -o -name bfile -print, o -print vale só para o segundo teste, e o afile não é impresso.

Buscar por tipo, tamanho e data

O teste -type separa o que o find procura: f para arquivo comum, d para pasta e l para link simbólico.

Tamanho com -size

O -size recebe um número e uma unidade: c para bytes, k para KiB, M para MiB e G para GiB. Número sem letra conta blocos de 512 bytes. O sinal muda o sentido: +n é mais que n, -n é menos que n, e n é exatamente n. Para listar arquivos grandes:

find / -type f -size +100M

Cuidado com o sinal de menos. O find arredonda o tamanho para cima, na unidade pedida. Por isso a página de manual avisa que -size -1M não equivale a -size -1048576c: ele só acha arquivos vazios.

Data com -mtime e -mmin

O -mtime n olha quando os dados do arquivo foram modificados, em blocos de 24 horas. -n é há menos de n blocos, +n é há mais de n, e n sem sinal é exatamente n. A parte fracionária é descartada. Por isso +1 significa pelo menos dois dias, e -mtime 7 não quer dizer "nos últimos 7 dias": isso é -mtime -7. O -mmin usa a mesma lógica, em minutos:

find /var/www -type f -mtime -7

find /tmp -type f -mmin +60

O primeiro lista arquivos modificados há menos de 7 blocos de 24 horas. O segundo lista arquivos modificados há mais de 60 minutos.

Se o objetivo é liberar espaço na VPS, o guia Disco cheio na VPS: como liberar espaço no Ubuntu trata desse assunto.

Quer conhecer a VPS da Eleven Host? VPS a partir de R$ 17,00/mês no Plano Bronze; confira na loja o que cada plano inclui. Ver planos de VPS

Limitar a busca: -maxdepth, -user e -perm

O -maxdepth N desce no máximo N níveis abaixo do ponto de partida. Com -maxdepth 0, o find aplica os testes só ao próprio ponto de partida. A página de manual diz que as opções globais, como o -maxdepth, devem vir logo depois da pasta; fora dessa posição o find avisa que isso pode confundir.

find . -maxdepth 1 -type d

Esse comando lista a própria pasta atual e as pastas que estão dentro dela, até um nível abaixo.

O -user NOME filtra pelo dono do arquivo e aceita também o número do usuário (UID). O -perm filtra pelas permissões, em octal ou em formato simbólico, e tem três formas:

  • -perm 664: as permissões são exatamente iguais a 664.
  • -perm -664: cada um dos bits do modo está ligado.
  • -perm /222: pelo menos um dos bits do modo está ligado.

A forma antiga +MODO não é mais aceita. Exemplos de uso:

find /var/www -user www-data

find /var/www -type f -perm 777

Para entender os números de permissão e mudá-los depois de achar os arquivos, o guia chmod: como mudar permissões de arquivos na VPS explica o comando chmod e seus modos.

Agir sobre o que o find achou

O -print mostra o caminho completo de cada resultado. Para fazer outra coisa com o resultado, existem as ações abaixo.

-exec: rodar um comando em cada resultado

O -exec COMANDO ; roda o comando para cada arquivo achado. A cadeia {} é trocada pelo nome do arquivo, e o ; encerra os argumentos. No terminal, os dois podem precisar de proteção: escreva \;. Com {} + no lugar, o find junta vários arquivos numa mesma execução, e o comando roda bem menos vezes:

find /tmp -type f -name "*.tmp" -exec ls -l {} \;

find /var/www -type f -name "*.php" -exec grep -l "eval(" {} +

O segundo comando mostra quais arquivos .php contêm o texto eval(. Para a diferença entre achar o arquivo e achar um texto dentro dele, o guia Comando grep: como buscar texto em arquivos na VPS cobre o grep. A página de manual avisa que o -exec tem problemas de segurança que não dá para evitar e indica o -execdir como alternativa mais segura.

O -ok é como o -exec, mas pergunta ao usuário antes de cada execução.

-delete: apagar, com cuidado

O -delete apaga os arquivos ou pastas achados. A página de manual só diz que ele apaga, e quem pergunta antes é o -ok. Ela dá dois avisos. O primeiro é sobre a ordem: o find lê a linha como uma expressão, e um -delete no começo faz o find tentar apagar tudo abaixo do ponto de partida. Ponha os testes antes e o -delete no fim. O segundo é testar antes com -print. Rode a busca sem o -delete, confira a lista e só então troque a ação:

find /var/log -type f -name "*.gz" -mtime +30 -print

find /var/log -type f -name "*.gz" -mtime +30 -delete

-print0 e xargs

Para passar os resultados a outro programa, a página de manual recomenda considerar com seriedade o -print0 no lugar do -print. Ele termina cada nome com um caractere nulo, e o xargs -0 sabe lê-lo. O jeito simples, find | xargs, funciona mal com nomes que têm espaços, aspas ou quebras de linha:

find . -type f -name "*.log" -print0 | xargs -0 ls -lh

Esconder as mensagens de Permission denied

Quando o usuário não tem permissão para ler algumas pastas, aparecem mensagens de erro no meio da busca, como o Permission denied. O find escreve essas mensagens quando não consegue ler as informações de um arquivo. Elas saem na saída de erro, e não na saída padrão, que é onde ficam os resultados.

Na documentação do bash, o redirecionamento [n]>word manda a saída para outro destino. Sem o n, vale a saída padrão (descritor 1), e a saída de erro é o descritor 2. Então 2>/dev/null manda as mensagens de erro para o /dev/null:

find / -name "nginx.conf" 2>/dev/null

Assim a tela mostra só os caminhos achados. Use isso com atenção: o redirecionamento também esconde as outras mensagens de erro. A página de manual diz que, quando o código de saída do find é maior que zero, não se deve confiar na correção dos resultados.

Comandos para guardar

  • find /pasta -name "*.log": acha por nome, com aspas no curinga.
  • find /pasta -iname "*.JPG": ignora maiúsculas e minúsculas.
  • find /pasta -type f ou -type d: só arquivos ou só pastas.
  • find / -type f -size +100M: arquivos maiores que 100 MiB.
  • find /pasta -type f -mtime -7: modificados há menos de 7 blocos de 24 horas.
  • find /pasta -type f -mmin +60: modificados há mais de 60 minutos.
  • find . -maxdepth 1: até um nível abaixo do ponto de partida.
  • find /pasta -name "*.php" -exec grep -l "texto" {} +: roda o grep nos arquivos achados.
  • find /pasta -name "*.tmp" -print: confira a lista antes de trocar por -delete.
  • find . -name "*.log" -print0 | xargs -0 ls -lh: passa os nomes a outro programa.
  • find / -name "arquivo" 2>/dev/null: esconde as mensagens de erro.

Quer ver os planos de VPS da Eleven Host? VPS a partir de R$ 17,00/mês no Plano Bronze; confira na loja o que cada plano inclui. Conhecer a VPS

Perguntas frequentes

Para que serve o comando find?

Procura arquivos e pastas a partir de uma pasta de partida, por nome, tipo, tamanho, data, dono ou permissões, e mostra o caminho de cada resultado.

Qual a diferença entre -name e -iname?

O -name diferencia maiúsculas e minúsculas. O -iname ignora essa diferença.

Como apagar arquivos com o find?

Com a ação -delete, no fim da expressão. Antes, rode o mesmo comando com -print para conferir a lista, porque o -delete apaga os itens achados.

Como esconder Permission denied no find?

Acrescente 2>/dev/null ao fim do comando. Isso manda a saída de erro para o /dev/null e deixa na tela só os resultados.

O que significa -mtime +1?

Arquivos modificados há pelo menos dois dias, porque o find descarta a parte fracionária da conta em blocos de 24 horas.

Esta resposta lhe foi útil?

Artigos Relacionados