#!/usr/bin/perl -- use strict; use warnings; use Data::Dump qw/ dd pp /; use Path::Tiny qw/ path /; use File::Find::Rule qw/ find /; my $thisdir = shift || path( __FILE__ )->parent; my @all = File::Find::Rule->in( "$thisdir" ); my @dirs = File::Find::Rule->directory ->name( qr/^[IPD]\d{8}$/ ) ->prune ## don't descend ->in( $thisdir ); dd( \@all, \@dirs ); dd( find( directory => name => qr/^[IPD]\d{8}$/, prune => ## don't descend in => $thisdir, ) ); __END__ $ perl ffindrule.pl . ( [ ".", "ffindrule.pl", "a", "a/echo.txt", "a/q", "a/q/echo.txt", "a/r", "a/r/D20131114", "a/r/D20131114/fa", "a/r/I20131114", "a/r/I20131114/fa", "a/r/P20131114", "a/r/P20131114/fa", "a/r/P20131114/P20131114", "b", "b/echo.txt", "b/s", "b/s/D20131114", "b/s/D20131114/away", "b/s/I20131114", "b/s/I20131114/ru", "b/s/P20131114", "b/s/P20131114/P20131114", "b/s/P20131114/run", "b/s/t", "b/s/t/o", "b/s/t/o/p", "b/s/t/o/p/D20131114", "b/s/t/o/p/I20131114", "b/s/t/o/p/P20131114", "b/t", "b/t/echo.txt", ], [ "a/r/D20131114", "a/r/I20131114", "a/r/P20131114", "b/s/D20131114", "b/s/I20131114", "b/s/P20131114", "b/s/t/o/p/D20131114", "b/s/t/o/p/I20131114", "b/s/t/o/p/P20131114", ], ) ( "a/r/D20131114", "a/r/I20131114", "a/r/P20131114", "b/s/D20131114", "b/s/I20131114", "b/s/P20131114", "b/s/t/o/p/D20131114", "b/s/t/o/p/I20131114", "b/s/t/o/p/P20131114", )