如何在 bash 脚本中将 20170202 这样的字符串解析为日期?

如何在 bash 脚本中将 20170202 这样的字符串解析为日期?

假设我有几个由脚本生成的文件并遵循以下模式:

yyyymmdd_fileName.fileExtension

yyyymmdd(即 20170202)是一个日期,其中年份是 2017 年,月份是二月,日期是 2 号)。

我知道我可以获取完整的文件名并提取日期部分,但是如何将其设为日期元素,以便可以与 提供的当前日期进行比较date

答案1

使用-darg date

man date

   -d, --date=STRING
          display time described by STRING, not 'now'
$ date -d 20170202
Thu Feb  2 00:00:00 CET 2017

为了方便比较,您可以使用 unixdate 格式

$ date -d 20170203 +%s
1486076400

答案2

另一种选择是使用touch.这应该适用于大多数系统,但您需要将时间指定为hhmm.ss。我通常使用1200.00.

touch -t 201702021200.00

相关内容