Quando você sabe que um arquivo existe em algum lugar no servidor, mas não sabe onde, a tentação costuma ser procurar pasta por pasta. Péssima ideia. No Linux, encontrar É feito para isso: pesquisar por nome, tipo, tamanho, data, direitos e, em seguida, agir somente quando o resultado for claro.
Recomendo que você o utilize com cautela, especialmente em um servidor de produção. Um comando `find` executado como root pode examinar um número enorme de arquivos, exibir erros de permissão e sobrecarregar o disco desnecessariamente. A ideia não é digitar o comando mais abrangente possível, mas sim restringir rapidamente a área de busca.

Comece procurando no lugar certo.
O formulário básico é simples: você especifica uma pasta inicial e, em seguida, um critério de pesquisa.
encontrar /etc -nome "ssh_config"
Aqui, o Linux está procurando um arquivo chamado ssh_config Em /etc e suas subpastas. Se você já sabe que o arquivo deve estar em um local específico, comece por esse local. É mais rápido, mais legível e evita que você escaneie todo o sistema desnecessariamente.
Para ignorar a distinção entre maiúsculas e minúsculas, use -iname :
encontrar /var/www -iname "*.conf"
Se você começar pela raiz, espere ver mensagens. Permissão negadaIsso não é necessariamente um problema. Você pode ocultá-los, mas não faça isso sistematicamente se estiver procurando especificamente por uma questão de direitos autorais.
encontrar / -nome "nginx.conf" 2>/dev/null
Limitar a pesquisa por tipo de arquivo
Em um servidor, um nome pode corresponder a um arquivo, uma pasta, um link simbólico ou algo mais. Adicione -tipo Para evitar resultados desnecessários.
encontrar /var/log -tipo f -nome "*.log"
encontrar /var/www -tipo d -nome "cache"
encontrar /usr/bin -tipo l -nome "python*"
-tipo f tem como alvo arquivos padrão. -tipo d pastas de destino. -tipo l Ele tem como alvo links simbólicos. Esse pequeno filtro evita muito ruído nos resultados.
Você também pode limitar a profundidade quando não quiser descer muito na árvore:
encontrar /var/www -maxdepth 2 -type d -name "cache"
Isso é muito útil em sites, backups ou pastas de usuários com muitos subdiretórios.
Localize os arquivos grandes antes de excluir qualquer coisa.
Quando um servidor está ficando sem espaço em disco, o comando `find` pode ajudar a localizar arquivos grandes. Comece listando-os, não excluindo-os.
encontrar /var -tipo f -tamanho +100M -imprimir
encontrar /home -tipo f -tamanho +1G -imprimir
Para exibir os tamanhos de forma legível, você pode executar ls -lh em cada resultado:
encontrar /var -tipo f -tamanho +100M -exec ls -lh {} +
Se seu objetivo é liberar espaço, não vá direto para rmPrimeiro, verifique o que você encontrou, especialmente em /var/lib, /var/log ou pastas de aplicativos. Um arquivo de banco de dados ou cache pode exigir um método de limpeza específico.
Para uma abordagem mais abrangente sobre o assunto, você pode complementá-la com o guia sobre Comandos a serem usados quando o espaço em disco do Linux estiver cheio.
Pesquisar por data de modificação
Para descobrir o que mudou recentemente, as opções de data são muito úteis. Por exemplo, arquivos modificados nos últimos 7 dias:
encontrar /etc -tipo f -mtime -7
Arquivos modificados há mais de 30 dias:
encontrar /var/log -tipo f -mtime +30
-mtime Funciona em dias. Para uma pesquisa mais refinada, veja também -mmin, que funciona em minutos:
encontrar /tmp -tipo f -mmin -60
Isso é útil após uma alteração de configuração, uma atualização ou um script que gerou arquivos sem indicar claramente onde eles foram armazenados.
Filtrar por direitos sem violar permissões
A função Encontrar também pode pesquisar com base em permissões. Por exemplo, para encontrar scripts executáveis em uma pasta:
encontrar /usr/local/bin -tipo f -perm /111
Para identificar arquivos que são muito fáceis de acessar, você pode procurar arquivos que sejam editáveis por qualquer pessoa:
find /var/www -type f -perm -002 -exec ls -lh {};
Não corrija uma lista de resultados com um chmod global sem entender o contexto. Permissões no Linux podem levar rapidamente a falhas de aplicativos. Se precisar revisar este ponto, o artigo sobre chmod recursivo no Linux Explica precisamente por que precisamos permanecer cautelosos.
Usando -exec sem desencadear uma catástrofe
-exec Permite executar comandos nos arquivos encontrados. É uma ferramenta poderosa, e por isso é onde você pode causar mais danos.
Comece sempre por mostrar os resultados:
encontrar /tmp -tipo f -nome "*.tmp" -imprimir
Somente então, se a lista estiver correta, você poderá solicitar a confirmação antes da exclusão:
encontrar /tmp -tipo f -nome "*.tmp" -exec rm -i {} +
O casal {} representa os arquivos encontrados. O + O comando `find` solicita que vários resultados sejam agrupados no mesmo comando sempre que possível, evitando assim a necessidade de iniciar um processo para cada arquivo.
encontrar /var/log -tipo f -nome "*.log" -exec ls -lh {} +
Meu conselho é simples: não exclua nada automaticamente até revisar a lista. Em um servidor, economizar um segundo não compensa restaurar um backup.
Um método rápido antes de iniciar a produção do Find.
- Comece com o arquivo mais preciso possível;
- adicionar
-tipo f,-tipo dOu-tipo lO mais breve possível; - usar
-maxprofundidadeSe você quiser evitar uma pesquisa muito profunda; - exibir os resultados com
-imprimirOu-exec ls -lhantes de agir; - Reserve os comandos destrutivos para o final, com confirmação, se possível.
Para obter documentação de referência, você pode consultar o manual do GNU Findutils em encontrar e a página encontrar(1) do manual 7. Se precisar seguir os registros após encontrar um arquivo, consulte o guia em cauda no Linux Esse método o complementa bem.