Linux重定向输出到以当前时间命名的文件 / date命令格式化输出
1. 利用date命令重定向到以当前时间命名的文件
例如:
ls -l > mylog_$(date +"%Y-%m-%d_%H-%M-%S").log
或:
ls -l > mylog_`date +"%Y-%m-%d_%H-%M-%S"`.log
2. 配合Crontab实现定时日志
例如:每5分钟记录/tmp目录下的文件
*/5 * * * * ls -l /tmp > /data/cronlog_$(date +"\%Y-\%m-\%d_\%H-\%M-\%S").log
或:
*/5 * * * * ls -l /tmp > /data/cronlog_`date +"\%Y-\%m-\%d_\%H-\%M-\%S"`.log
可以注意到此时百分号%
前面都加了反斜杠\
。原因是在crontab中的命令遇到百分号%
会换行,因此需要加入反斜杠\
进行转义。
Linux原文解释:Percent-signs (%) in the command, unless escaped with backslash (), will be changed into newline characters, and all data after the first % will be sent to the command as standard input.
3. date命令格式
- date [+格式],如:
date +%Y-%m-%d
- 如果有空格,需要用双引号括起来。(建议无论有无空格,格式化输出时都用双引号括起来)
date +"%Y-%m-%d %H:%M:%S"
- 常用格式释义:
%Y 年
%y 年(年份最后两位)
%m 月
%d 日
%H 时(24小时制)
%I 时(12小时制)
%M 分
%S 秒
%Z 时区
%D 日期,等于%m/%d/%y
%T 时间,等于%H:%M:%S
%x locale日期描述,例如12/31/99(类似于 %D或 %m/%d/%y)
%X locale时间描述,例如23:13:48(类似于 %T或 %H:%M:%S)
更多详细格式可参考此处