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

时间:2013-06-06 19:39:16

标签: 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.log
-rw-rw-r--  1 root      root           2739 Jun 05 00:37 1370392630.log

我需要能够获得这些时间戳之间的秒差,并验证它们相隔15秒。

1 个答案:

答案 0 :(得分:0)

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 -i.e.排序文件,最旧的第一个,最新的最后一个。