Я думаю, что Hyat искал простой bash
решения его вопроса. Это должно работать, но это показывает, как неудобно это обрабатывать даты, используя bash
:
#!/bin/bash
set -e # exit the script if something goes wrong
enddate=$(date -u -d "2010-01-01")
date=$(date -u -d "2003-01-01")
while [[ $date != $enddate ]]; do
filename=$(date -u -d "$date" +"dat_%Y%m%d_gf.img")
printf "$date " # watch the progress on the terminal
if [[ ! -e $filename ]]; then
echo "$filename not found"
else
echo # print a newline, since printf didn't do it
fi
date=$(date -u -d "$date + 1 day")
done
Команда date
может генерировать любую дату, которую вы хотите с опцией -d
, и он принимает свободной формы ввода, поэтому $date + 1 day
работает. Я всегда пропускаю -u
до date
, чтобы избежать проблем с летним временем. Добавление одного дня в последней команде date
фактически добавляет 24 часа на моем компьютере, но при переключении на или из DST вам нужно добавить 23 или 25 часов, чтобы вернуться к тем же часам. Использование -u
для UTC позволяет избежать этой проблемы с помощью часового пояса, который не имеет DST.
Только на SO 2546 эквивалентно «нескольким» ... – twalberg