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

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

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

Любая помощь будет признательна.

10
задан 6 September 2018 в 15:09

5 ответов

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

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

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

0
ответ дан 6 September 2018 в 15:09

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
ответ дан 6 September 2018 в 15:09

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

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

создает log111017

0
ответ дан 6 September 2018 в 15:09

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

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

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

0
ответ дан 6 September 2018 в 15:09

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

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

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

myfilename-21-02-2014
0
ответ дан 6 September 2018 в 15:09

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

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