如何在Linux shell中表示“2015120”中的日期格式?

如何在Linux shell中表示“2015120”中的日期格式?

我的同事正在生成带有前置日期格式的日志文件2015120,例如 ,它代表一月而1不是01

我处理此类问题的常用方法是使用datecommand.Like date +'%Y%m%d'。但我使用了 date 命令,结果发现他们没有提到代表一月,前面没有 0。

所以我想知道是否有另一种方式来表示日期,就像 2015120在 Linux 中一样?

答案1

对于 GNU、FreeBSD 或 OS/X date(或date使用系统的libc' 的实现strftime(),其中即 GNU libc),-在后面添加连字符%可防止数字字段用零填充:

$ date +'%Y%-m%d'
2015120

授权在 GNU 系统上:

默认情况下,日期用零填充数字字段。下列可选标志可以跟随在“%”之后:

-(连字符)不要填充该字段

如果您的系统date不支持,您可以使用perl

$ perl -MTime::Piece -e '
  $t = localtime;
  print $t->year, $t->mon, $t->mday;
'
2015122

答案2

> date +'%Y %m %d' | ( read year month day; echo "${year}${month#0}${day}" )
2015120

答案3

如果在连字符 (-) 后添加一 (1),它可以在 Linux 上运行,并且也可以移植到惠普-UX(可能还有其他风格的 UNIX):

$ date +'%Y%-1m%d'
2015120

相关内容