unix shell中两个文件的时间戳差异

时间:2011-08-17 04:29:25

标签: unix timestamp solaris

我有两个文件。我需要计算两个文件之间的时间戳差异。

我需要test1和test2之间的时间戳差异:     -rw-r - r-- 1 root root 1 Aug 16 16:26 test1     -rw-r - r-- 1 root root 2 2010年12月13日test2

我需要test3和test4之间的时间戳差异。

-rw-r--r--   1 root     root           3 Aug 16 16:26 test3
-rw-r--r--   1 root     root           4 Aug 16 17:34 test4

请告诉我们如何在Solaris中实现它。 我正在使用Solaris,我的机器信息是:

- Sol 5.10 Generic_127128-11 i86pc i386 i86pc. 

如果您需要了解其他信息,请告诉我们。

我在Solaris中将以下答案日期转换为秒。

truss /usr/bin/date 2>&1 | grep ^time | awk -F"= " '{print $2}'

但这是针对当前日期..我们如何为文件执行此操作(例如test3,如上所述)?

3 个答案:

答案 0 :(得分:3)

stat(1)命令可以以秒为单位显示时间戳:

stat --printf '%Y\n' foo

因此,以下内容可能会起作用:

(stat --printf '%Y' test2; printf ' - '; stat --printf '%Y\n' test4) | bc -lq

根据需要调整。

答案 1 :(得分:0)

尝试这样的事情以秒为单位获取日期

date +%s -d "`ls -l test1 | awk -F " " '{ print $6,$7 }'`"

答案 2 :(得分:0)

$ ls -l .bashrc*
-rw-r--r-- 1 max max 360 Dec 14  2010 .bashrc
-rw-r--r-- 1 max max 359 Dec  2  2010 .bashrc~

$ echo $((`stat --format=%Y .bashrc` - `stat --format=%Y .bashrc~`))
1018884

$(())语法是bash算术表达式扩展。上面发生的是文件时间戳,以秒为单位,因为减去了Unix纪元,并打印出差异。