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