#!/bin/bash # # # # # Determine time of last and first Trackevent in file/unit # # Why? Because timestamp is not human-readable and one unit can have multiple files. # ## function isNumber(){ re='^[0-9]+$' if [[ "$1" =~ $re ]]; then return 1 else return 0 fi } function getDates() { # gets second/last line timestamp and transform it to date # for more files, will get latest/earliest date of all files date1=`date +%s` date2=0 for file in "$@"; do timestamp1=`head -2 "$file" | tail -1 | cut -d';' -f1` timestamp2=`tail -1 "$file" | cut -d';' -f1` isNumber "$timestamp1" if [ "$?" != 0 ]; then if [ ${timestamp1} -lt ${date1} ]; then date1="$timestamp1" file1="$file" fi else echo "nonum" fi isNumber "$timestamp2" if [ "$?" != 0 ]; then if [ ${timestamp2} -gt ${date2} ]; then date2="$timestamp2" file2="$file" fi else echo "nonum" fi done if [ ${date1} -lt ${earliest} ]; then earliest="$date1" earliestFile="$file1" fi if [ ${date2} -gt ${latest} ]; then latest="$date2" latestFile="$file2" fi date1=`date -d @"$timestamp1" +"%Y-%m-%d %T"` date2=`date -d @"$timestamp2" +"%Y-%m-%d %T"` echo "${date1} ${file1}" echo "${date2} ${file2}" echo "" } function getDatesUnit(){ for i in "$@"; do echo "unit $i" files=`ls "$dir"/*unit-$i-* 2> /dev/null` if [ "$?" == 0 ]; then getDates $files else echo "didn't find files" echo "" fi done } function getDatesAll() { earliest=`date +%s` latest=0 getDatesUnit {1..13} earliest=`date -d @"$earliest" +"%Y-%m-%d %T"` latest=`date -d @"$latest" +"%Y-%m-%d %T"` echo "unit all" echo "${earliest} ${earliestFile}" echo "${latest} ${latestFile}" } if [ -z $1 ];then dir="." else dir="$1" if ! [ -d $dir ]; then echo "dir doesn't exist" exit fi fi getDatesAll # > "${dir}/../02-inspect/dates"