Uso seguro do comando find no Ubuntu - Evite acidentes de exclusao

Uso seguro do comando find no Ubuntu - Evite acidentes de exclusao

O que voce vai aprender

  • Buscas basicas com find (por nome, extensao, data de modificacao, tamanho)
  • Procedimento de exclusao segura (listar primeiro -> verificar contagem -> excluir)
  • Praticas seguras com xargs (-print0 / xargs -0)

Resumo rapido

Siga esta ordem para exclusoes -- e inegociavel:

  1. Listar primeiro (nao excluir)
  2. Verificar contagem (pare se for mais que o esperado)
  3. Excluir com seguranca (use -print0 / xargs -0 sempre que possivel)

Pre-requisitos

  • SO: Ubuntu
  • Shell: bash
  • Permissoes: sudo quando necessario (para diretorios do sistema)

1. Basico do find (busca)

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

1-1. Busca por nome (correspondencia exata)

$ find . -name "error.log"

1-2. Busca por extensao (ex: .log)

$ find . -name "*.log"

1-3. Busca sem diferenciar maiusculas/minusculas

$ find . -iname "*.log"

1-4. Somente arquivos / somente diretorios

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

2. Filtrando por data de modificacao e tamanho

Conclusao: Combine -mtime e -size -- condicoes amplas sao a principal causa de acidentes.

2-1. Arquivos modificados nos ultimos 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

Util para encontrar "arquivos pesados" durante investigacoes de espaco em disco.

3. Antes da exclusao: Listar e contar primeiro

Conclusao: 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 necessario)

$ 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 e maior que o esperado, suas condicoes sao muito amplas. Adicione -mtime ou -size para restringir.

4. Metodos de exclusao segura (padrao para iniciantes)

Conclusao: Use -print0 | xargs -0 para excluir com seguranca -- trata nomes de arquivo com espacos.

Exclusao pode causar acidentes instantaneos, entao e 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 seguranca

Use -print0 e xargs -0 para tratar nomes de arquivo com espacos com seguranca.

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

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

find ... -delete e simples mas pode causar acidentes instantaneos se as condicoes estiverem erradas.

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

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

5. Armadilhas comuns (onde acidentes acontecem)

Conclusao: Execute pwd primeiro para confirmar a localizacao -- este unico habito 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. Verificacao pos-exclusao

Conclusao: Execute df -h apos a exclusao para confirmar que o espaco em disco foi realmente recuperado.

Apos a exclusao, verifique o uso de disco:

$ df -h

Proximas leituras