LINUX.ORG.RU

Преобразование числа в дату

 


0

1

Уважаемые форумчане! Помогите решить задачу для bash script. Есть файл в имени которого содержится год и день в году. Задача скопировать файл в папку со структурой YYYY-MM. Примерное имя файла xxxxxxxxxx16180xxxxx.txt.

Спасибо.



Последнее исправление: dgorski (всего исправлений: 1)

Если xxxxxxxxxx постоянной длины, то можно cut использовать, или вообще подстроку из переменной брать сразу. Месяц можно примерно определить пошаговым вычитанием количества дней в каждом месяце и проверкой на >=0. Опять же можно нарваться на високосный год.

Radjah ★★★★★
()
Ответ на: комментарий от quest

Форматирование

Да формат первого числа в году 001, поступающие файлы не всегда имеют значения принадлежащие текущему году и дню. Например,сегодня можно получить файл за аналогичный по порядковому номеру день, но за 15 год.

dgorski
() автор топика
Ответ на: комментарий от quest

Форматирование

Нет вполне производственная задача по обработке пакетов сигналов различных датчиков. Ваше любопытство реально мешает Вам решить саму задачу. Предлагаю сосредоточиться на ней.

dgorski
() автор топика

Задача уровня рядового школьного упражнения по информатике. И ТС ещё где-то «работает»...

vsemnazlo
()
Ответ на: комментарий от stitchix

Форматирование

Я вообще-то за помощью сюда пришел, в поисках решения. Пускай задача для чайника, но я не программист. Man date я поизучал, но как вернуть месяц в нормальном виде зная только год и день в году так и не понял.

dgorski
() автор топика
Ответ на: Форматирование от dgorski

я вашу задачу решил от безделья за пять минут, но вот давать ли код вам это для меня сейчас еще больший вопрос) давайте мы вам лучше объясним о том как ее решать на bash

quest ★★★★
()
Ответ на: комментарий от mky

Спасибо,

а как правильно передать в это выражение в виде переменной выдранное значение дня??

YYYY= echo `date +%Y` DDD= echo `$lastfile | cut -c25-27` MM= echo `date +%m -d '2016-01-01 - 1 day + $DDD day'` DirMonth=${YYYY}-${MM}

Проблемы с передачей $DDD

dgorski
() автор топика
Ответ на: комментарий от dgorski

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

MM=`date +%m -d "2016-01-01 - 1 day + $DDD day"`

И год, наверное, нужно формировать из имени файла, как-то так:

YYYY='20'`echo $lastfile | cut -c23-24`

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.