Hi Zentara,
I am using absolute paths. I have set up to testdir for testing this script. When I run the script the stdout is:
GLOB(0x804cbdc)
. .. RESULTS 2008 RESULTS 2009 RESULTS 2007
The glob should be the files that match from grep, but I nothing is being moved from 'testdir1' to 'testdir2'.
#!/usr/bin/perl
use warnings;
use strict;
# goes from current dir, and looks thru
# a subdir named 7, for subdirs starting with
# Jan_2009_, then goes into that subdir and finds
# files begiining with a or b or c
# making your particular regexes is up to you
#opendir ( my $rs, "tarfs-orion/orion/Data/Sequencing_Results/RESULTS
+2009");
my $topdir = "/home/mgavi/testdir1";
my @subdirs = get_sub_dirs($topdir);
my $newdir = "/home/mgavi/testdir2";
sub get_sub_dirs {
my $dir = shift;
opendir my $dh, $dir or die "Error: $!";
print "$dh\n";
my @dirs = readdir $dh;
print "@dirs\n";
@dirs = grep /^Results(.*)$/,@dirs;
closedir $dh;
return @dirs;
}
print "@subdirs\n";
my @files;
foreach my $dir(@subdirs){
opendir my $dh, "$topdir/$dir" or die "Error: $!";
@files = readdir $dh;
print "@files\n";
@files = grep /^(\d+\D\d)_(LacZ|pgK|SD|SU)(.*)$/,@files;
foreach my $file(@files){
system( "mv $file $newdir/$file");
}
closedir $dh;
}
print "@files\n";
|