#usr/bin/perl use strict; use warnings; use File::Find; use File::stat; my $path='e:\testfolder'; find(\&checkFile, $path); # loop through all files in my directory #--------------------------------- check to be applied on each file ------------- sub checkFile { my $fullfilename = $File::Find::name; my $filesize = stat($File::Find::name)->size; my $filename = $_; # --- check for relevance based on expected filenames if ((! ($filename =~ /_obj_pp_comp.txt/ )) && (! ($filename =~ /obj.doc/ ))) { return; } if ($filesize == 0) { print ("\n"); return; } if (! -f $filename) { print ("\n"); return; } analyze($fullfilename); } #--------------------------------- work to be done on each relevant file ------------- sub analyze { my @files = $fullfilename; my $pat='/^x2=0.[6-9][0-9][0-9][0-9][0-9]\n'; my $pat1='/^z2=0.[6-9][0-9][0-9][0-9][0-9]\n'; my $pat3='/^some_t2=0.[6-9][0-9][0-9][0-9][0-9]\n'; foreach my $file (@files) { foreach my $file1(@files) { foreach my $files2(@files) { if (($file=~/^$pat/) && ($file1=~/^$pat1/) && ($file2=~/^$pat3/)) { print "$file IS VALID\n"; system 'mv $file E:\test\some' } else print "not relevant\n" } } } }