1

Вот картинка ...

Формат даты: Y% m% d% H% M% S% Это мой формат имени файла: file_sub1_20110501000000.txt
Структура каталогов:

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  

Моя проблема заключается в том, как эффективно отфильтровать имена файлов в диапазоне, где
($ file_date <= $ cur_date && $ file_date> = $ prev_date)

Я думал обойти каждый файл, сравнивая, находятся ли даты в пределах диапазона, но я нахожу подход слишком медленным, когда я имею дело с тысячами файлов.

Есть ли более быстрый способ сделать это?

Спасибо!

1 ответ1

0

Вы должны быть в состоянии перечислить все файлы с сегодняшней или вчерашней датой в имени файла, используя эту команду:

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

Выполнение этой команды из dir/ будет проходить через все подкаталоги.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .