获取今天的日期并在文件名中使用它

使用命令行,我想在名称中创建一个包含今天日期的日志文件(例如,今天是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以反映您想要的顺序。 日期的手册页告诉您有关其他格式的更多信息。

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* 

在撰写本文时,它是2017年1月3日。因此,生成的文件名适当地是月,日,年 – log010317