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

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

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

Любая помощь будет оценена по достоинству. :)

10
задан 17 October 2011 в 16:55

6 ответов

Вы можете отформатировать вывод с помощью параметра «+ FORMAT», например

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

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

8
ответ дан 25 May 2018 в 18:00
  • 1
    Черт, 36 секунд слишком медленно. ;-) – htorque 17 October 2011 в 17:03
  • 2
    Я просто понял, что для использования этого в работе cron мне пришлось избегать% -signs, чтобы он читал: touch "log$(date +'\%m\%d\%y')" – Louis B. 19 October 2011 в 00:06

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

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

дает это как выход:

myfilename-21-02-2014
1
ответ дан 25 May 2018 в 18:00
  • 1
    На самом деле это напечатает myfilename-date +%d-%m-%Y. – Adaephon 21 February 2014 в 12:03
  • 2
    True .. MyFileName - только префикс .. При необходимости мы можем сохранить его, иначе .. echo date +"%d-%m-%Y" этого достаточно ... он напечатает только дату 21-02-2014 – Sreedhar GS 21 February 2014 в 12:10
  • 3
    Ах, теперь я вижу: я запутался, потому что «не появился в вашем ответе. Это потому, что они используются askubuntu для указания блоков кода. Вы должны пометить код, либо окружив его обратными окнами, либо отступом абзаца с кодом с 4 пробелами. Для начала вы, вероятно, должны использовать меню над редактором для этого и проверить свое сообщение в предпросмотре ниже текстового поля перед отправкой. – Adaephon 21 February 2014 в 12:25
  • 4
    Я согласен .. Спасибо за предложение .. :) – Sreedhar GS 21 February 2014 в 13:48

Одно из возможных решений:

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

создает log111017

0
ответ дан 25 May 2018 в 18:00

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

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

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

0
ответ дан 25 May 2018 в 18:00

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

0
ответ дан 25 May 2018 в 18:00

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

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

дает это как выход:

myfilename-21-02-2014
1
ответ дан 6 August 2018 в 03:00

Другие вопросы по тегам:

Похожие вопросы: