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


10

我想使用命令行创建一个名称为今天的日期的日志文件(例如,今天是2011年5月17日,因此文件名必须为log051711)。

我知道如何创建文件(touch filename),但是我不知道如何获取今天的日期。我已经查看了的手册date,但似乎无法真正格式化其输出?

任何帮助,将不胜感激。

Answers:


10

您可以使用'+ FORMAT'参数格式化输出,例如

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

有关可以在FORMAT中使用的序列的信息,请参见手册页。


该死的,36秒太慢了。;-)
htorque 2011年

1
我只是想知道要在Cron工作中使用它,我必须转义%符号,以便它显示为:touch "log$(date +'\%m\%d\%y')"
Louis B.

3

运行命令

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

将其作为输出:

myfilename-21-02-2014

实际上这将打印myfilename-date +%d-%m-%Y
阿达芬2014年

是的.. MyFileName只是一个前缀..如果需要我们可以保留它,否则..回声date +"%d-%m-%Y" 就足够了...它只会打印日期21-02-2014
Sreedhar GS

啊,现在我明白了:我很困惑,因为`未出现在您的答案中。这是因为askubuntu使用它们来指示代码块。您应该通过在代码两边加上反引号或在代码段缩进4个空格来标记代码。对于初学者,您可能应该使用编辑器上方的菜单,并在提交前在文本框下方的预览中查看您的帖子。
阿达芬2014年

0

可能的灵魂之一:

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

创造 log111017


0

我敢肯定,其他人有更好的方法来做到这一点,但假设您希望月日年这应该可行:

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

您可以对%m,%d,%Y重新排序以反映所需的顺序。日期手册页介绍了更多有关其他格式的信息。


0

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日。因此,生成的文件名适当地为month,day,year- log010317

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.