获取自上次修改文件以来的天数

时间:2013-10-03 05:33:10

标签: linux shell unix scripting

我想知道从文件上次修改日期到今天的日期的天数。

我使用此$ ls -l uname.txt | awk '{print $6 , "", $7}'但它给了我最后修改日期。我想知道从上次修改日期到今天的日期的天数。

有什么办法吗?

3 个答案:

答案 0 :(得分:5)

您可以使用ls告诉您文件的修改日期,而不是使用date -r。除此之外,date的{​​{1}}说明符(用于格式化自纪元以来的秒数)对计算很有用。将两者结合起来很容易产生所需的天数:

%s

答案 1 :(得分:1)

尝试创建脚本:

#!/bin/bash

ftime=`stat -c %Y uname.txt`
ctime=`date +%s`
diff=$(( (ctime - ftime) / 86400 ))
echo $diff

答案 2 :(得分:0)

你可以用一些BASH数学和基本可读API来结束GNU和BSD stat的差异:

since_last_modified() {
   local modified
   local now=$(date +%s)
   local period=$2

   stat -f %m $1 > /dev/null 2>&1 && modified=$(stat -f %m $1) # BSD stat
   stat -c %Y $1 > /dev/null 2>&1 && modified=$(stat -c %Y $1) # GNU stat

   case $period in
        day|days)    period=86400 ;; # 1 day in seconds
       hour|hours)   period=1440  ;; # 1 hour in seconds
     minute|minutes) period=60    ;; # 1 minute in seconds
           *)        period=      ;; # default to seconds
   esac

   if [[ $period > 0 ]]; then
      echo "$(( (now - modified) / period ))"
   else
      echo "$(( now - modified ))"
   fi
}

自上次修改以来秒数的基本用法:

since_last_modified uname.txt

或分钟保存到变量

minutes_since=$(since_last_modified uname.txt minutes)