zenity --calendar如何将结果转换为' find -mtime'

时间:2014-10-11 15:43:59

标签: bash calendar find zenity

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

2 个答案:

答案 0 :(得分: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 ))

答案 1 :(得分: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