![如何在 bash 脚本中将 20170202 这样的字符串解析为日期?](https://linux22.com/image/104530/%E5%A6%82%E4%BD%95%E5%9C%A8%20bash%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E5%B0%86%2020170202%20%E8%BF%99%E6%A0%B7%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%A7%A3%E6%9E%90%E4%B8%BA%E6%97%A5%E6%9C%9F%EF%BC%9F.png)
假设我有几个由脚本生成的文件并遵循以下模式:
yyyymmdd_fileName.fileExtension
yyyymmdd(即 20170202)是一个日期,其中年份是 2017 年,月份是二月,日期是 2 号)。
我知道我可以获取完整的文件名并提取日期部分,但是如何将其设为日期元素,以便可以与 提供的当前日期进行比较date
?
答案1
使用-d
arg 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