use strict; use warnings; use Data::Dump; use File::Find::Rule; my $output = "/abc/def/ghi"; my @exclude_dirs = qw(OLD); my $rule = File::Find::Rule->new; $rule->or($rule->new ->file() ->name(@exclude_dirs) ->prune ->discard, $rule->new); my @files = $rule->in("$output"); dd \@files; #### /abc/def/ghi/Project1/ /abc/def/ghi/Project1/2013 /abc/def/ghi/Project1/2013/file1_project1.txt /abc/def/ghi/Project1/20l4 /abc/def/ghi/Project1/2014/foobar_2014_0912_255.txt /abc/def/ghi/Project1/2014/foobar_2014_0916_248.txt /abc/def/ghi/Project2 /abc/def/ghi/Project2/2013 /abc/def/ghi/Project1/2013/file2_project1.txt /abc/def/ghi/Project2/2014 /abc/def/ghi/Project2/2014/foobarbaz_2014_0912_255.txt /abc/def/ghi/Project2/2014/foobarbaz_2014_0912_248.txt #### /abc/def/ghi/Project1/2014/foobar_2014_0912_255.txt /abc/def/ghi/Project2/2014/foobarbaz_2014_0912_248.txt