![]() |
|
|
Google unix.com
|
|||||||
| Форумы | Регистрация | Правила форума | Ссылки | Альбомы | ЧАВО | Список участников | Календарь | Поиск | Сегодняшние сообщения | Отметить форумы читать |
| UNIX перспективных И опытных пользователей Эксперт-на-экспертов. Узнайте современные UNIX, UNIX команды, Linux, операционные системы, системы управления, программирование, Shell, Shell скриптов, Solaris, Linux, HP-UX, AIX, OS X, BSD. |
Подробнее UNIX и Linux Темы форума можно найти полезные
|
||||
| Нить | Резьба для начинающих | Форум | Ответы | Последнее сообщение |
| Простой вопрос (для вас, ребята, тяжело мне) | BkontheShell718 | Shell программирование и сценарии | 3 | 01-07-2008 11:48 AM |
| [вопросы] трудно осуществить, необходима помощь | EnioMarques | UNIX для чайников Вопросы И Ответы | 2 | 09-20-2007 11:22 PM |
| Жесткий диск Вопрос | Netghost | AIX | 0 | 08-24-2006 02:01 PM |
| Пожалуйста, помогите .... Отчаянные нужно! Трудный вопрос! | Sparticus007 | UNIX перспективных И опытных пользователей | 1 | 01-11-2002 06:43 PM |
| Эксперты Только! Жесткий Вопрос вперед!!!! | Foo49272 | UNIX перспективных И опытных пользователей | 1 | 01-07-2002 10:22 PM |
![]() |
|
|
LinkBack | Резьба Инструменты | Искать в этом Thread | Оценить Thread | Режимы дисплея |
|
|
|
||||
|
трудный вопрос
У меня есть каталог, содержащий ряд файлов в формате:
A2008001231000.L2 Я лишь забота о 6-8 цифр, так что файлы эффективно: ?????---*. L2 Я файлы в диапазоне от 001 ????? *. L2 на ????? 366 *. L2 Следует отметить, эти три цифры представляют юлианский день файлов. Моя цель состоит в том, чтобы иметь возможность определить две переменные: start_day и end_day. Как я могу покинуть список всех файлов между start_day и end_day. Примечание: Поскольку юлианский дней должно быть 3 цифры долго она усложняет вопросы. |
|
||||
|
Я вижу, вы в mktime () рай. С человеком mktime: Код:
struct tm {
int tm_sec; /* seconds */
int tm_min; /* minutes */
int tm_hour; /* hours */
int tm_mday; /* day of the month */
int tm_mon; /* month */
int tm_year; /* year */
int tm_wday; /* day of the week */
int tm_yday; /* day in the year */
int tm_isdst; /* daylight saving time */
};
tm_yday
The number of days since January 1, in the range 0 to 365.
Ну, я не мог получить mktime () работать напрямую, но я до сих пор используется tm_yday. Код:
Tsunami julian_days # perl test2.pl Enter start date [yyyy/mm/dd]: 20080101 Enter end date [yyyy/mm/dd]: 20080220 A2008041231000.L2 A2008021231000.L2 A2008001231000.L2 Tsunami julian_days # perl test2.pl Enter start date [yyyy/mm/dd]: 2008/01/01 Enter end date [yyyy/mm/dd]: 2008/02/20 A2008041231000.L2 A2008021231000.L2 A2008001231000.L2 Tsunami julian_days # и код: Код:
#!/usr/bin/perl -w
use POSIX;
$| = 1;
my $input;
my (@date_s, @date_e);
opendir(DIR, ".") || die "can't opendir: $!";
@dots = grep { ! /^\./ && /\.L2$/ } readdir(DIR);
closedir DIR;
print "Enter start date [yyyy/mm/dd]: ";
($input = <STDIN>) =~ /(\d{4})\/*-*(\d{2})\/*-*(\d{2})/;
$date_s[0] = mktime (0, 0, 0, $3, ($2-1), ($1-1900), 0, 0);
$date_s[2] = $1;
print "Enter end date [yyyy/mm/dd]: ";
($input = <STDIN>) =~ /(\d{4})\/*-*(\d{2})\/*-*(\d{2})/;
$date_e[0] = mktime (0, 0, 0, $3, ($2-1), ($1-1900), 0, 0);
$date_e[2] = $1;
(undef, undef, undef, undef, undef, undef, undef, $date_s[1] ,undef) = localtime($date_s[0]);
(undef, undef, undef, undef, undef, undef, undef, $date_e[1] ,undef) = localtime($date_e[0]);
foreach my $i (@dots)
{
$i =~ /^A(\d{4})(\d{3})/;
print $i . "\n" if (($1 >= $date_s[2] && $1 <= $date_e[2]) && (($2+0) >= $date_s[1] && ($2+0) <= $date_e[1]));
}
|
![]() |
| Закладки |
| Теги |
| datecalc |
| Резьба Инструменты | Искать в этом Thread |
| Режимы дисплея | Оценить эту ветку |
|
|