Loading

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命令格式

  1. date [+格式],如:
date +%Y-%m-%d
  1. 如果有空格,需要用双引号括起来。(建议无论有无空格,格式化输出时都用双引号括起来)
date +"%Y-%m-%d %H:%M:%S"
  1. 常用格式释义:
%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)

更多详细格式可参考此处



posted @ 2021-05-24 23:33  Convict  阅读(2633)  评论(0编辑  收藏  举报