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:
*.jpgencontra arquivos que terminam em.jpg. - Você pode substituí-lo por outros padrões, como
*.txtpara arquivos de texto ou*.logpara 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
30por qualquer número, conforme suas necessidades:- 1 ano: use
-mtime +365. - 1 semana: use
-mtime +7.
- 1 ano: use
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!