Получить сегодняшнюю дату и использовать ее в имени файла

10

Используя командную строку, я хочу создать файл журнала с сегодняшней датой в имени (например, сегодня 17.05.2011, поэтому имя файла должно быть log051711).

Я знаю, как создать файл ( touch filename), но я не знаю, как получить сегодняшнюю дату. Я посмотрел руководство для date, но кажется, что я не могу отформатировать его вывод?

Любая помощь будет оценена.

Луи Б.
источник

Ответы:

10

Вы можете отформатировать вывод, используя параметр «+ FORMAT», например

touch "log$(date +'%m%d%y')"

Смотрите man-страницу о том, какие последовательности вы можете использовать в FORMAT.

Флориан Диш
источник
Блин, 36 секунд слишком медленно. ;-)
htorque
1
Я только что понял, что, чтобы использовать это в работе cron, я должен был избежать% -знаков, чтобы это читалось:touch "log$(date +'\%m\%d\%y')"
Луи Б.
3

Выполнение команды

echo "myfilename-"`date +"%d-%m-%Y"`

дает это в качестве вывода:

myfilename-21-02-2014
Шридхар Г.С.
источник
На самом деле это будет печатать myfilename-date +%d-%m-%Y.
Adaephon
Верно .. MyFileName - просто префикс .. При необходимости мы можем сохранить его, иначе .. Эхо date +"%d-%m-%Y" этого достаточно ... он будет печатать только дату 21-02-2014
Sreedhar GS
Ах, теперь я вижу: я запутался, потому что `не появилось в вашем ответе. Это потому, что они используются Askubuntu для обозначения блоков кода. Вы должны пометить код, заключив его в кавычки или пометив абзац кодом с 4 пробелами. Для начала вам, вероятно, следует использовать меню над редактором и проверить свою запись в окне предварительного просмотра под текстовым полем перед отправкой.
Adaephon
0

Одна из возможных сущностей:

date +log%y%m%d | xargs touch

создает log111017

Сергей
источник
0

Я уверен, что у кого-то есть лучший способ сделать это, но если вы хотите, чтобы месяц-год-год это работало:

touch log`date +%m%d%y`  

и вы можете изменить порядок% m,% d,% Y, чтобы отразить желаемый порядок. Страница man для date расскажет вам больше о дополнительных форматах.

Dason
источник
0

Python может сделать эту работу также. Небольшой сценарий для этого будет следующим:

#!/usr/bin/env python
import time,os

date=time.gmtime()
month = str(date.tm_mon).zfill(2)
day=str(date.tm_mday).zfill(2)
year=str(date.tm_year)[-2:]
fname = 'log' + month + day + year

with open(fname,'a') as f:
    os.utime(fname,None) 

Идея здесь проста: мы используем, time.gmtime()чтобы получить текущую дату, извлечь конкретные поля из структуры, которую она возвращает, преобразовать соответствующие поля в строки и создать имя файла с полученным именем.

Тестовый забег:

$ ls
touch_log_file.py*
$ ./touch_log_file.py                                                                                             
$ ls
log010317  touch_log_file.py*

На момент написания статьи это 3 января 2017 года. Таким образом, результирующее имя файла соответственно месяц, день, год - log010317

Сергей Колодяжный
источник