0

我必须用来zenity --calendar从用户那里读取日期。之后,我必须在程序中使用它find作为 option 的参数-mtime。Zenity 返回日期的格式20.09.2014,我不知道如何计算它是多少天前,-mtime选项中需要什么。谁能帮助我并告诉我该怎么做?我刚刚开始学习 bash,这是一个练习的一部分。谢谢你的帮助!:-)

4

2 回答 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 回答