BASH: Como filtrar melhor os diretórios de arquivos para um determinado intervalo de datas no nome do arquivo?

1

Aqui está a foto ...

Formato da data: Y% m% d% A% M% S% Este é o meu formato de nome de arquivo: file_sub1_20110501000000.txt
Estrutura de diretórios:

dir/  
  sub1/  
    file_sub1_20110501003000.txt  
    file_sub1_20110501010000.txt  
    file_sub1_20110501013000.txt  
    file_sub1_20110501020000.txt  
    --more--  
  sub2/  
    file_sub2_20110501003000.txt  
    file_sub2_20110501010000.txt  
    file_sub2_20110501013000.txt  
    file_sub2_20110501020000.txt  
    --more--  
  --more--/  
    --more--.txt  

Meu problema é como filtrar eficientemente nomes de arquivos dentro do intervalo em que ($ file_date < = $ cur_date & $ file_date > = $ prev_date)

Eu estava pensando em percorrer cada arquivo ao comparar se as datas estão dentro do intervalo, mas acho que a abordagem é muito lenta quando estou lidando com milhares de arquivos.

Existe uma maneira mais rápida de fazer isso?

Obrigado!

    
por Matt 11.05.2011 / 12:33

1 resposta

0

Você deve poder listar todos os arquivos com a data de hoje ou de ontem no nome do arquivo usando este comando:

find . -iname "*'date +%Y%m%d'*" -or -iname "*'date -v -d1 +%Y%m%d'*"

A execução deste comando a partir de dir/ será realizada em todos os subdiretórios.

    
por 11.05.2011 / 13:58