#!/usr/bin/perl use strict; use warnings; use Net::Subnet; use Date::Manip; use Data::Dumper; use File::Find::Rule; use IO::Uncompress::Bunzip2 (); my @LogDirs = ('/home/tinyos/Monks/TestDir', '/home/tinyos/Monks/TestDir2'); # add more here #Find relevant files sub get_files { my (@dates) = @_; my @dirss; foreach my $logDir (@LogDirs) { foreach my $dateDir (@dates){ push @dirss, join("/", $logDir, $dateDir); } } my $level = shift // 3; # level to dig into my @files = File::Find::Rule->file() ->name( '*.bz2','*.log' ) #can insert regex too ->maxdepth($level) ->in(@dirss); return @files; } #Matches IP address only sub searchForIP { my ($files, $ip) = @_; my @files = @$files; for my $file (@files){ my $filename = $file; my $fh = IO::Uncompress::Bunzip2->new($filename) or die "bunzip2 $filename: $IO::Uncompress::Bunzip2::Bunzip2Error"; while (<$fh>){ print "$filename:$.:$_" if /$ip/; } } } #This portion contains some code for user input, I will leave this out cause its not related to my problem my $numdays = 2; my $numberOfDays = $numdays .' days'; my $dateStart = ParseDate("01/01/2018"); # change that to the user input format (d/m/y) my $dateEnd = DateCalc($dateStart, $numberOfDays); # To find the every day date1 to date2 my @dates = ParseRecur("0:0:0:1:0:0:0","",$dateStart, $dateEnd); my @datesFormatted = map { UnixDate($_, '%Y-%m-%d') } @dates; my @filess = get_files(@datesFormatted); print Dumper \@filess; my $ip = '127.0.0.1'; searchForIP(\@filess, $ip); __END__ $ perl test.pl $VAR1 = [ '/home/tinyos/Monks/TestDir/2018-01-01/access.log', '/home/tinyos/Monks/TestDir/2018-01-01/sys.log', '/home/tinyos/Monks/TestDir/2018-01-02/access.log', '/home/tinyos/Monks/TestDir/2018-01-02/sys.log', '/home/tinyos/Monks/TestDir/2018-01-03/access.log', '/home/tinyos/Monks/TestDir/2018-01-03/sys.log', '/home/tinyos/Monks/TestDir2/2018-01-01/access.log', '/home/tinyos/Monks/TestDir2/2018-01-01/sys.log', '/home/tinyos/Monks/TestDir2/2018-01-02/access.log', '/home/tinyos/Monks/TestDir2/2018-01-02/sys.log', '/home/tinyos/Monks/TestDir2/2018-01-03/access.log', '/home/tinyos/Monks/TestDir2/2018-01-03/sys.log' ]; /home/tinyos/Monks/TestDir/2018-01-03/sys.log:1:127.0.0.1 This is insident 1 in 2018-01-05 /home/tinyos/Monks/TestDir/2018-01-03/sys.log:4:127.0.0.1 This is second insident 4 in 2018-01-05 /home/tinyos/Monks/TestDir2/2018-01-03/sys.log:1:127.0.0.1 This is insident 1 in 2018-01-05 /home/tinyos/Monks/TestDir2/2018-01-03/sys.log:4:127.0.0.1 This is second insident 4 in 2018-01-05