use warnings; use strict; use File::Find::Rule; my $tagLocation = '...'; my @dirExclusions = qw/ LOG cache AVCHD /; my $rule = File::Find::Rule->new; $rule->or( $rule->new->directory->name( @dirExclusions )->prune->discard, $rule->new->directory ); my @fileList = $rule->in($tagLocation);