#!/usr/bin/perl
use warnings;
use strict;
use POSIX qw(strftime);
=for
Will execute as a cronjob every evening @10PM.
The "SequencingResults" dir is where the search will begin.
The script will search subdirs based on the date.
If the current date is " 01-16-09", then the path will
be "SequencingResults/RESULTS 2009/JAN 2009/Results 01-16-09".
If the first file has either LacZ|pgK|SD|SU then it will mv that file
to $seqdir. It will do this recursively for each file.
=cut
my $topdir = "/home/mgavi/testdir1";
my @subdirs = get_sub_dirs($topdir);
my $bottomdir = strftime "Results %m-%d-%y", localtime;
# This keeps track of the current year
my $yeardir = $year
# This date will be passed readdir to get the current subdir
my $date = strftime "%m-%d-%y", localtime;
print "$date\n";
sub get_sub_dirs {
my $dir = shift;
opendir my $dh, $dir or die "Error: $!";
#print "$dh\n"; #this is your glob
my @dirs = readdir $dh;
#@dirs = grep /^Results(.*)$/,@dirs;
@dirs = grep /^RESULTS(.*)$/,@dirs;
closedir $dh;
return @dirs;
}
print "subdirs = @subdirs\n";
foreach my $dir(@subdirs){
opendir my $dh, "$topdir/$dir" or die "Error: $!";
print $dh;
my @files = readdir $dh;
#print "raw files = @files\n";
@files = grep /^(\d+\D\d)_(LacZ|pgK|SD|SU)$/,@files;
#print "$dir -> @files\n";
# create dir for raw seq files with permissions
my $seqdir = "/home/mgavi/testdir2/SeqAssembly";
mkdir $seqdir, 0755;
foreach my $file(@files){
system( "mv $topdir/$bottomdir/$dir/$file $seqdir/$fil
+e");
}
closedir $dh;
}
Stdout is:
01-14-09
subdirs = RESULTS 2008 RESULTS 2009 RESULTS 2007
GLOB(0x804cd08)GLOB(0x804cd08)GLOB(0x804cd08)
None of the files are being moved to the new dir. |