Comando find: como achar arquivos e pastas na VPS
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

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 fou-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.