我希望得到自上次以人类可读格式更新文件以来的时间。在互联网上我发现:
now=$(date +%s) # to get timestamp of now
last=$(stat -c %Y /var/cache/apt/) # to get the timestamp of the last update
但现在我想将now
与last
分开并在Debian shell中以人类可读的格式打印出来?
答案 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)的秒数差异)