我必须用来zenity --calendar
从用户那里读取日期。之后,我必须在程序中使用它find
作为 option 的参数-mtime
。Zenity 返回日期的格式20.09.2014
,我不知道如何计算它是多少天前,-mtime
选项中需要什么。谁能帮助我并告诉我该怎么做?我刚刚开始学习 bash,这是一个练习的一部分。谢谢你的帮助!:-)
问问题
1253 次
2 回答
0
您可以使用该date
命令将日期转换为自纪元以来的秒数,计算以秒为单位的差异并将其转换为天数。这看起来如下:
pickedDate=$(zenity --calendar)
pickedSeconds=$(date --utc +%s --date "$pickedDate")
nowSeconds=$(date --utc +%s)
diffDays=$(( ($nowSeconds - $pickedSeconds)/86400 ))
或在一行中:
echo $(( ($(date --utc +%s) - $(date --utc +%s --date $(zenity --calendar)))/86400 ))
于 2014-10-12T08:40:51.073 回答
0
你有
zenity
它有一个--date-format
选项可以用于返回您期望的日期,即$ zenity --calendar --date-format='%Y-%m-%d' 2015-08-03
date
它可以使用选项解析传递的日期并将其-d
返回为 unix 时间戳find
预计-mtime
以天数表示
我想我会做这样的事情
#!/bin/bash
theDate=$(date +'%s' -d $(zenity --calendar --date-format='%Y-%m-%d'))
now=$(date +'%s')
diffDays=$(( ($now - $theDate) / 86400 ))
find /tmp -daystart -mtime -$diffDays
于 2015-08-03T15:31:56.273 回答