[NTLUG:Discuss] How to tell file1 is half an hour older than file2?

Fred James fredjame at concentric.net
Mon Apr 29 12:07:08 CDT 2002


stat, sed, awk, grep, echo, and test are all available on SVR4, so they 
are probable available on most UNIX, Linux, and other UNIX like, systems.



MadHat wrote:

> stat, sed, awk, grep, echo and test are GNU tools.
> He said without gnu tools.  
> 
> I mean in perl, it is just a few lines (adding a few for a usage
> statement to make it pretty).  Tcl isn't much different, or PHP (which
> can be used as a CLI script, but I wouldn't do it).
> 
> #!/usr/bin/perl
> if ($ARGV[0] && $ARGV[1]) {
>   @data1 = stat $ARGV[0];
>   @data2 = stat $ARGV[1];
>   if ($data1[9] > $data2[9]) { 
>     print "$ARGV[0] is newer\n" 
>   } else {
>     print "$ARGV[1] is newer\n" 
>   }
> } else {
>   print "Usage: $0 <file1> <file2>
>   will return the newer file based on mtime (time the file was last
> modified)\n\n";
> }
> 
> 
> I mean if you want to use stat, you can just do
> stat -t $1 | awk -F' ' {print'$13'}
> to get the date in seconds since the epoc and compare them directly, no
> need to convert them.
> 
> There are hundreds of ways of doing this, but most use GNU tools, which
> he said he does not have (which seems odd to me, but...)
> 
> On Mon, 2002-04-29 at 10:32, Paul Ingendorf wrote:
> 
>>I know you can do file1 -ol file2 but for time I'm pretty sure you would have to write your own function to tell for sure.
>>
>>Just think it out logically it might take a bit of time but it isn't all that hard per se.
>>
>>function returnTimeDiff {
>>	echo some code here  for file $1 and file $2
>>}
>>
>>What I would recommend is turning the dates into a single number via whatever algorithm you like.  I.E. year in seconds/minutes Same for month day and hour then add your minutes or seconds and subtract the two and check the difference.
>>
>>The following should show you how easy it is.  The following script requires sed, awk, and stat all GNU tools installed on most systems.
>>
>># ---------------------------------- Example -----------------------------------
>># Author Paul Ingendorf
>>function returnYear {
>>	echo $1 | awk -F\| {print'$6'}
>>}
>>function returnMonthNum {
>>	month=`echo $1 | awk -F\| {print'$3'}`
>>	case "$month" in
>>		Jan)
>>			echo 1
>>			;;
>>		Feb)
>>			echo 2
>>			;;
>>		Mar)
>>			echo 3
>>			;;
>>		Apr)
>>			echo 4
>>			;;
>>		May)
>>			echo 5
>>			;;
>>		Jun)
>>			echo 6
>>			;;
>>		Jul)
>>			echo 7
>>			;;
>>		Aug)
>>			echo 8
>>			;;
>>		Sep)
>>			echo 9
>>			;;
>>		Oct)
>>			echo 10
>>			;;
>>		Nov)
>>			echo 11
>>			;;
>>		Dec)
>>			echo 12
>>			;;
>>		*)
>>			echo 0
>>	esac
>>}
>>function returnDay {
>>	echo $1 | awk -F\| {print'$4'}
>>}
>>function returnHour {
>>	echo $1 | awk -F\| {print'$5'} | awk -F: {print'$1'}
>>}
>>function returnMinute {
>>	echo $1 | awk -F\| {print'$5'} | awk -F: {print'$2'}
>>}
>>function returnSecond {
>>	echo $1 | awk -F\| {print'$5'} | awk -F: {print'$3'}
>>}
>>function returnTime {
>>	let Time=`returnMonthNum $1`*24*60*60+`returnDay $1`*24*60*60+`returnHour $1`*60*60+`returnMinute $1`*60+`returnSecond $1`
>>	echo $Time
>>}
>>let x=1
>>for modified in `stat $1 $2  | grep Modify | sed -e "s/ /|/g"`
>>	do
>>		export fileDate$x=$modified
>>		let x=$x+1
>>	done
>>let fileTime1=`returnTime $fileDate1`
>>let fileTime2=`returnTime $fileDate2`
>>let timeDiff=$fileTime2-$fileTime1
>>if test `returnYear $fileDate1` -gt `returnYear $fileDate2`
>>	then echo older than 30
>>	else
>>		if test $timeDiff -gt 29
>>			then echo older than 30
>>			else echo not older than 30
>>			fi
>>	fi
>>
>># -------------------------------- End Example ----------------------------------
>>
>>-- 
>>-->> mailto:pauldy at wantek.net
>>-->> http://www.wantek.net/
>>Running ....... Cos anything else would be a waste...
>>`:::'                  .......  ......
>> :::  *                  `::.    ::'
>> ::: .::  .:.::.  .:: .::  `::. :'
>> :::  ::   ::  ::  ::  ::    :::.
>> ::: .::. .::  ::.  `::::. .:'  ::.
>>.:::.....................::'   .::::..
>>
>>
>>-----Original Message-----
>>From: discuss-admin at ntlug.org [mailto:discuss-admin at ntlug.org]On Behalf
>>Of Sameer Khan
>>Sent: Saturday, April 27, 2002 1:51 PM
>>To: discuss at ntlug.org
>>Subject: [NTLUG:Discuss] How to tell file1 is half an hour older than
>>file2?
>>
>>
>>Hello,
>>Any ideas how one can go about doing above in
>>a ksh script (without GNU tools unfortunately)?
>>Thanks for your brain droppings!
>>Sameer
>>
>>
>>_______________________________________________
>>http://www.ntlug.org/mailman/listinfo/discuss
>>
>>
>>_______________________________________________
>>http://www.ntlug.org/mailman/listinfo/discuss
>>
>>


-- 
...make every program a filter...





More information about the Discuss mailing list