С помощью командной строки я хочу создать файл журнала с сегодняшней датой в имени (например, сегодня 17.05.2011, поэтому имя файла должно быть log051711
).
Я знаю, как создать файл (touch filename
), но я не знаю, как получить сегодняшнюю дату. Я посмотрел руководство по date
, но кажется, что я не могу отформатировать его вывод?
Любая помощь будет признательна.
Вы можете отформатировать вывод, используя параметр «+ FORMAT», например,
touch "log$(date +'%m%d%y')"
См. На странице руководства, какие последовательности вы можете использовать в FORMAT.
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
Одно из возможных решений:
date +log%y%m%d | xargs touch
создает log111017
Я уверен, что у кого-то есть лучший способ сделать это, но, если вы хотите, чтобы месяц-день-год это работало:
touch log`date +%m%d%y`
, и вы можете изменить порядок% m,% d,% Y отражает порядок, который вы хотите. Страница man для date расскажет вам больше о дополнительных форматах.
Выполнение команды
echo "myfilename-"`date +"%d-%m-%Y"`
дает это в качестве вывода:
myfilename-21-02-2014