in reply to script for scanning folder and sending a warning if a file within it is older than 5 minutes

dkaplowitz,
You really don't need to sort the files.
#!/usr/bin/perl use strict; use warnings; my $dir = $ARGV[1] || 'C:/devl/bin'; chdir $dir or die "Unable to change directories to $dir : $!"; my $now = time; my $threshold = $ARGV[0] || 300; opendir( DIR , '.' ) or die "Unable to read $dir : $!\n"; for ( readdir( DIR ) ) { if ( abs( $now - (stat($_))[9] ) > $threshold ) { Create_Warning_File(); last; # Unless you want 1 warning per file } } sub Create_Warning_File { # You did not give enough information to fill this in }
Cheers - L~R
  • Comment on Re: script for scanning folder and sending a warning if a file within it is older than 5 minutes
  • Download Code

Replies are listed 'Best First'.
Re: Re: script for scanning folder and sending a warning if a file within it is older than 5 minutes
by dkaplowitz (Novice) on Mar 19, 2004 at 19:18 UTC
    Thanks L~R for the reply. The script only needs to create a single file (say in another local directory) with no contents...another program will be monitoring that directory for the existence of this file generated by the script. Something like "touch warning.txt" would work.
      For the sake of some closure, I have something unpretty that works:
      use strict; open OUTPUT, ">c:/temp/warning.txt"; my $mytime=(time); my ($File,$FileStat,$CallOutDir); chdir 'F:\Solimar_Work_Directories\XVTP\XVTP Cluster Feed' or die "Arg +hh!!! $!"; opendir(ROOT, ".") or die "Arghh!!! $!"; foreach $File (readdir(ROOT)) { next if $File=~/^\./; next if ($File eq "_Watched_Folder_._Active_"); next if ($File=~/\._Checking_File_Readiness_$/); next if (-d $File); if ($FileStat = (stat $File)[9]){ if ($FileStat <= ($mytime - 300)) { print "File older than 5min found. The file name is $File"; print OUTPUT "File older than 5min found. The file name is $Fi +le"; last; } } } close OUTPUT;
      I'm looking into adding some more functionality and flexibility to what's there. In the meantime it's doing what I need it to.