Bash 验证15秒时间戳差异的脚本

Bash 验证15秒时间戳差异的脚本,bash,timestamp,Bash,Timestamp,使用bash脚本,我试图验证文件修改之间是否有15秒的间隔。如果我有: -rw-rw-r-- 1 root root 2739 Jun 05 00:43 1370392620.log -rw-rw-r-- 1 root root 2739 Jun 05 00:37 1370392623.log -rw-rw-r-- 1 root root 2739 Jun 05 00:37 1370392626.lo

使用bash脚本,我试图验证文件修改之间是否有15秒的间隔。如果我有:

-rw-rw-r--  1 root      root           2739 Jun 05 00:43 1370392620.log
-rw-rw-r--  1 root      root           2739 Jun 05 00:37 1370392623.log
-rw-rw-r--  1 root      root           2739 Jun 05 00:37 1370392626.log
-rw-rw-r--  1 root      root           2739 Jun 05 00:37 1370392630.log
我需要能够得到这些时间戳之间的秒差,并验证它们是否相隔15秒

last=0
ls -rt *.log |
while read fname 
do
  epoch_seconds=$(date -r $fname +%s)
  if [ $last -gt 0 ]; then
    printf "%20s   diff: %10d   %13d\n" "$fname"  $(( $epoch_seconds - $last )) $epoch_seconds
    [  $(( $epoch_seconds - $last )) -ne 15 ]  && echo "file mtime difference error"
    last=$epoch_seconds     
  else
    printf "%20s   start %10d   %13d\n" "$fname" 0  $epoch_seconds
    last=$epoch_seconds
  fi

done

date-f filename
命令(GNU)返回mtime(上次写入,即关闭时间),格式为
+%s
给出纪元秒数。从下一个文件中减去第一个文件的mtime,
ls-rt
按相反的mtime对文件进行排序-即,最早的第一个,最新的最后一个。

如果您有GNU
ls
,它有一个包含秒数的
--全职
选项。或者检查您的系统是否有
stat
命令,该命令可以将修改时间返回为从纪元开始的秒数。如果您有
stat
,则可以很容易地将其输出传输到检查时间差的
awk
脚本。我正在运行QNX。这不支持全职选项或统计。这是我经常遇到的问题。吉姆,这是一个很好的开始。我正在使用(QNX)并将date-r切换到date-t以获得大纪元时间。我现在遇到一个错误:[:0:意外的运算符/操作数它正在抱怨[]的位置,假设您的版本bash与POSIX兼容。[和]如果是关键字,它们的两边必须有空格,就像任何其他关键字一样。如果失败,请尝试使用if;then fi构造检查时间差的单行。