Dica de Linux: listar arquivos pela idade

Introdução

Já se perguntou como encontrar arquivos em um diretório que não são tocados há anos? Esteja você limpando arquivos antigos, arquivando dados ou verificando arquivos obsoletos, o comando find do Linux é a solução ideal. Nesta dica, mostraremos como listar arquivos pela idade no Linux usando um comando simples, mas poderoso.


O comando

find /path/to/files -type f -name '*.jpg' -mtime +30 -exec ls -l {} \;

Este comando permite localizar arquivos com base na data da última modificação, filtrá-los por tipo ou nome e exibir informações detalhadas sobre eles.


Explicação do comando

1. /path/to/files

Isso especifica o diretório a ser pesquisado. Substitua-o pelo caminho real da pasta que você deseja explorar.

  • Exemplo: se você quiser pesquisar sua biblioteca de fotos, use ~/Pictures.

2. -type f

A opção -type especifica o tipo de itens a serem pesquisados.

  • f: refere-se apenas a arquivos (ignora os diretórios).

3. -name '*.jpg'

Isso filtra os resultados com base nos nomes de arquivo ou nas extensões.

  • Exemplo: *.jpg encontra arquivos que terminam em .jpg.
  • Você pode substituí-lo por outros padrões, como *.txt para arquivos de texto ou *.log para arquivos de log.

4. -mtime +30

Esta é a chave para filtrar arquivos com base na idade deles.

  • +30: encontra arquivos modificados pela última vez há mais de 30 dias.
  • Substitua 30 por qualquer número, conforme suas necessidades:
    • 1 ano: use -mtime +365.
    • 1 semana: use -mtime +7.

5. -exec ls -l {} \;

Isso diz ao Linux o que fazer com os arquivos encontrados.

  • -exec: executa um comando em cada arquivo.
  • ls -l: lista informações detalhadas sobre cada arquivo (por exemplo, tamanho, permissões, proprietário e data da última modificação).
  • {}: marcador para cada arquivo encontrado.
  • \;: sinaliza o fim do comando.

Dica profissional

Quer testar o comando sem executar ls -l? Omita a parte -exec:

find /path/to/files -type f -name '*.jpg' -mtime +30

Isso simplesmente listará os caminhos dos arquivos, sem detalhes adicionais.


Por que usar este comando?

O comando find é incrivelmente versátil e útil para tarefas de manutenção do sistema:

  • Liberar espaço em disco: identifique e exclua arquivos antigos.
  • Arquivar dados mais antigos: mova arquivos intocados por meses ou anos para o armazenamento de backup.
  • Monitorar arquivos obsoletos: verifique se há arquivos desatualizados em diretórios críticos.

Exemplos práticos

Exemplo 1: encontrar documentos antigos

Pesquise .docx arquivos na sua pasta Documents que não tenham sido modificados há mais de 90 dias:

find ~/Documents -type f -name '*.docx' -mtime +90 -exec ls -l {} \;

Exemplo 2: localizar arquivos grandes com mais de 6 meses

Encontre arquivos maiores que 100 MB em /home/user que não tenham sido modificados há mais de 6 meses:

find /home/user -type f -size +100M -mtime +180 -exec ls -lh {} \;
  • -size +100M: filtra arquivos maiores que 100 MB.
  • ls -lh: exibe os tamanhos dos arquivos em formato legível (por exemplo, MB, GB).

Exemplo 3: pesquisar PDFs antigos

Encontre .pdf arquivos em /home/user/Downloads que não tenham sido modificados no último ano:

find ~/Downloads -type f -name '*.pdf' -mtime +365 -exec ls -l {} \;

Exemplo 4: encontrar arquivos modificados recentemente

Pesquise .txt arquivos modificados nos últimos 7 dias em /var/www:

find /var/www -type f -name '*.txt' -mtime -7 -exec ls -l {} \;
  • -mtime -7: encontra arquivos modificados nos últimos 7 dias.

Exemplo 5: remover arquivos temporários antigos

Exclua arquivos em /tmp que não tenham sido modificados há mais de 30 dias:

find /tmp -type f -mtime +30 -exec rm {} \;
  • rm: exclui os arquivos.
  • Aviso: use com cuidado, pois isso remove os arquivos permanentemente.

Exemplo 6: arquivar arquivos de mídia antigos

Mova .mp4 arquivos com mais de 60 dias de ~/Videos para uma pasta de arquivamento:

find ~/Videos -type f -name '*.mp4' -mtime +60 -exec mv {} ~/Archives/ \;
  • mv: move os arquivos para a pasta especificada.

Exemplo 7: encontrar arquivos criados em um intervalo de tempo específico

Pesquise .log arquivos criados entre 30 e 60 dias atrás em /var/log:

find /var/log -type f -name '*.log' -mtime +30 -mtime -60 -exec ls -l {} \;
  • -mtime +30: arquivos com mais de 30 dias.
  • -mtime -60: arquivos modificados nos últimos 60 dias.

Exemplo 8: encontrar arquivos vazios com mais de 1 semana

Localize arquivos vazios em /home/user que não tenham sido modificados na última semana:

find /home/user -type f -empty -mtime +7 -exec ls -l {} \;
  • -empty: filtra arquivos com tamanho zero.

Exemplo 9: pesquisar arquivos por tempo de acesso

Encontre .png arquivos em /var/www/html que não tenham sido acessados nos últimos 90 dias:

find /var/www/html -type f -name '*.png' -atime +90 -exec ls -l {} \;
  • -atime: filtra arquivos pelo tempo de acesso em vez do tempo de modificação.

Exemplo 10: encontrar arquivos criados recentemente

Localize arquivos em /home/user criados nos últimos 3 dias:

find /home/user -type f -ctime -3 -exec ls -l {} \;
  • -ctime: filtra arquivos pelo tempo de criação.

Exemplo 11: encontrar arquivos por permissões

Pesquise arquivos em /etc com permissões específicas (por exemplo, graváveis por outros):

find /etc -type f -perm /o+w -exec ls -l {} \;
  • -perm /o+w: encontra arquivos graváveis por outros.

Exemplo 12: localizar arquivos modificados na última hora

Encontre arquivos modificados na última hora em /home/user/Documents:

find ~/Documents -type f -mmin -60 -exec ls -l {} \;
  • -mmin -60: filtra arquivos modificados nos últimos 60 minutos.

Exemplo 13: encontrar arquivos com propriedade específica

Pesquise arquivos pertencentes ao usuário jose em /var/log que não tenham sido modificados há mais de 90 dias:

find /var/log -type f -user jose -mtime +90 -exec ls -l {} \;
  • -user jose: filtra arquivos pertencentes ao usuário especificado.

Exemplo 14: excluir diretórios específicos

Encontre .jpg arquivos em /home/user com mais de 30 dias, excluindo a pasta Downloads:

find /home/user -type f -name '*.jpg' -mtime +30 -not -path "~/Downloads/*" -exec ls -l {} \;
  • -not -path: exclui arquivos no diretório especificado.

Exemplo 15: encontrar arquivos modificados em uma data específica

Pesquise arquivos modificados há exatamente 10 dias em /home/user:

find /home/user -type f -mtime 10 -exec ls -l {} \;
  • -mtime 10: encontra arquivos modificados há exatamente 10 dias.

Exemplo 16: localizar arquivos com extensões específicas

Pesquise .zip e .tar.gz arquivos com mais de 60 dias em /backups:

find /backups -type f \( -name '*.zip' -o -name '*.tar.gz' \) -mtime +60 -exec ls -l {} \;
  • \( -name '*.zip' -o -name '*.tar.gz' \): pesquisa várias extensões de arquivo.

Conclusão

O comando find do Linux é uma ferramenta poderosa para gerenciar arquivos com base na idade, no tipo e no nome. Esteja você liberando espaço em disco, arquivando dados antigos ou monitorando arquivos obsoletos, este comando lhe dá controle total sobre seus diretórios.

Experimente hoje e leve suas habilidades com Linux para o próximo nível!

Deixe um comentário