Uso seguro do comando find no Ubuntu - Evite acidentes de exclusão

Uso seguro do comando find no Ubuntu - Evite acidentes de exclusão

O que você vai aprender

  • Buscas básicas com find (por nome, extensão, data de modificação, tamanho)
  • Procedimento de exclusão segura (listar primeiro -> verificar contagem -> excluir)
  • Práticas seguras com xargs (-print0 / xargs -0)

Resumo rápido

Siga esta ordem para exclusões -- é inegociável:

  1. Listar primeiro (não excluir)
  2. Verificar contagem (pare se for mais que o esperado)
  3. Excluir com segurança (use -print0 / xargs -0 sempre que possível)

Pré-requisitos

  • SO: Ubuntu
  • Shell: bash
  • Permissões: sudo quando necessário (para diretórios do sistema)

1. Básico do find (busca)

Conclusão: Use find com -name, -type e -iname para localizar arquivos antes de filtrar.

1-1. Busca por nome (correspondência exata)

$ find . -name "error.log"

1-2. Busca por extensão (ex: .log)

$ find . -name "*.log"

1-3. Busca sem diferenciar maiúsculas/minúsculas

$ find . -iname "*.log"

1-4. Somente arquivos / somente diretórios

$ find . -type f -name "*.log"   # somente arquivos
$ find . -type d -name "cache"   # somente diretorios

2. Filtrando por data de modificação e tamanho

Conclusão: Combine -mtime e -size -- condições amplas são a principal causa de acidentes.

2-1. Arquivos modificados nos últimos 7 dias

$ find . -type f -mtime -7

2-2. Arquivos com mais de 30 dias

$ find . -type f -mtime +30

2-3. Arquivos maiores que 100MB

$ find . -type f -size +100M

Útil para encontrar "arquivos pesados" durante investigações de espaço em disco.

3. Antes da exclusão: Listar e contar primeiro

Conclusão: Sempre conte com wc -l antes de excluir -- mais resultados que o esperado significa pare.

3-1. Listar arquivos (sem excluir)

Exemplo: Encontrar arquivos .log em /var/log (use sudo se necessário)

$ sudo find /var/log -type f -name "*.log"

3-2. Contar arquivos (pare se forem muitos)

$ sudo find /var/log -type f -name "*.log" | wc -l

Se a contagem é maior que o esperado, suas condições são muito amplas. Adicione -mtime ou -size para restringir.

4. Métodos de exclusão segura (padrão para iniciantes)

Conclusão: Use -print0 | xargs -0 para excluir com segurança -- trata nomes de arquivo com espaços.

Exclusão pode causar acidentes instantâneos, então é melhor usar um procedimento fixo.

4-1. Primeiro, restrinja (ex: .log com mais de 30 dias)

$ sudo find /var/log -type f -name "*.log" -mtime +30

4-2. Depois, verifique a contagem

$ sudo find /var/log -type f -name "*.log" -mtime +30 | wc -l

4-3. Se OK, exclua com segurança

Use -print0 e xargs -0 para tratar nomes de arquivo com espaços com segurança.

$ sudo find /var/log -type f -name "*.log" -mtime +30 -print0 | sudo xargs -0 rm -f
  • -print0: Saída delimitada por null (segura para espaços/quebras de linha)
  • xargs -0: Aceitar entrada delimitada por null corretamente

-delete pode ser usado? (Resposta: Com cuidado)

find ... -delete é simples mas pode causar acidentes instantâneos se as condições estiverem erradas.

# Use somente se entender os riscos
$ sudo find /tmp -type f -mtime +7 -delete

Para iniciantes, domine o padrão -print0 | xargs -0 rm primeiro.

5. Armadilhas comuns (onde acidentes acontecem)

Conclusão: Execute pwd primeiro para confirmar a localização -- este único hábito previne a maioria dos acidentes.

$ pwd
$ ls -la

Exemplo: Mais de 30 dias E maiores que 10MB

$ sudo find /var/log -type f -name "*.log" -mtime +30 -size +10M

6. Verificação pós-exclusão

Conclusão: Execute df -h após a exclusão para confirmar que o espaço em disco foi realmente recuperado.

Após a exclusão, verifique o uso de disco:

$ df -h

Próximas leituras