BASH: Как лучше всего фильтровать каталоги файлов за определенный диапазон дат в имени файла?

1404
Matt

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

Формат даты: 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
William Jackson

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

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

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