Procurando arquivos em um intervalo de datas

No meu dia-a-dia eu preciso lidar com muitos arquivos em linha de comandos. São milhões de arquivos ocupando teras e mais terabytes espalhados em milhares de pastas e vez por outra alguém vem com a pergunta: ” – Quantos arquivos recebemos no mês de maio?”, ou ” – Quanto de espaço ocupamos com os arquivos recebidos em Novembro passado?” O comando “find” já faz isso mas ele não é muito amigável para lidar com datas então aproveitando meu tempo vago eu fiz um script que simplifica esta tarefa e é o que compartilho agora.

O script está disponível em um repositório público no meu Github e pode ser clonado a vontade. A instalação é bem simples. Baixe o arquivo “findindate.sh”, dê permissão de execução e então execute-o como root usando o parâmetro “–install”.

Isso instalará uma cópia do script em /usr/local/bin disponibilizando a ferramenta à todos os usuários da máquina.

Uma vez instalado a sua utilização também é simples. Ele é invocado dentro de um subshell (quando executamos um comando usando “ ou $() ) e retorna os parâmetros corretos para o GNU find lidar com datas de forma simplificada.

Assim, digamos que eu queira listar todos os arquivos na minha pasta de Imagens que foram criados em março. Usaríamos o seguinte comando:

find Imagens -type f `findindate --inmonth 03` -ls

Se quiser especificar o ano também, por exemplo, quais arquivos foram recebidos em Novembro de 2018 então basta usar o parâmetro –inyear, assim:

find Imagens -type f `findindate --inmonth 11 --inyear 2018` -ls

A partir daí a necessidade é o que ditará o limite para como se pode localizar arquivos com este complemento.

Por exemplo se precisar responder qual é espaço ocupado por estes arquivos, ao invés do “-ls”, bastaria usar o “-printf” do find e redirecionar isso para um “one-line awk script” assim:

find Imagens -type f `findindate --inmonth 11 --inyear 2018` -printf '%s\n'| awk '{ soma+=$0 } END { print soma " bytes" }'

Você pode executar o comando finindate diretamente na linha de comandos usando o parâmetro “–help” para ver os demais parâmetros disponíveis.

Deixe nos comentários seu parecer sugestões e críticas.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.