自上次以人类可读格式更新文件以来的时间

时间:2017-03-20 17:40:18

标签: linux bash shell

我希望得到自上次以人类可读格式更新文件以来的时间。在互联网上我发现:

now=$(date +%s) # to get timestamp of now
last=$(stat -c %Y /var/cache/apt/) # to get the timestamp of the last update

但现在我想将nowlast分开并在Debian shell中以人类可读的格式打印出来?

2 个答案:

答案 0 :(得分:0)

你可以写一个函数:

time_since() {
  file=$1
  now=$(date +%s)
  file_time=$(stat -c %Y "$file")
  seconds=$((now - file_time))
  hh=$((  $seconds / 3600 ))
  mm=$(( ($seconds - $hh * 3600) / 60 ))
  ss=$((  $seconds - $hh * 3600 - $mm * 60 ))
  printf '%d:%02d:%02d\n' $hh $mm $ss
}

time_since /var/cache/apt
# output => 332:17:07

答案 1 :(得分:0)

使用bash& printf

time_since() {
        eval "$(stat -s "$1")"  # st_mtime=1490029104
        TZ=UTC printf "%(%T)T\n" $(( $(printf "%(%s)T") - st_mtime ))
}
time_since file.txt
#out -> 02:07:02

某些持续时间值(以秒为单位的时差)与纪元时间相同。 (例如,与纪元(UTC)的秒数差异)