GNU FIND: Simplificando a busca por arquivos em um intervalo de datas

Se você já precisou localizar arquivos criados em determinado período e usando o Gnu find já deve ter se deparado com a complexidade de se usar os parâmetros para esta tarefa. Por conta da minha necessidade de lidar com alguns milhões de arquivos diariamente eu acabei desenvolvendo um script que funciona como complemento para o find e que simplifica esta tarefa.

O script está disponível no repositório público no meu Github e pode ser clonado a vontade. As instruções para instalação e uso são bem simples de serem entedidas, independente do seu nível de experiência com linha de comando.

O scrip foi concebido para funcionar dentro de um subshell e a “mágica” é que ele recebe as instruções que damos e as converte na estrutura de parâmetros corretos para que o GNU find possa 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" }'

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

findindate --help

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

Deixe um comentário

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.