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