in reply to How do you exclude certain folder or directories from a search
If you want to exclude a directory tree from a File::Find search, the best way is to prune the search space. This way you don't have to needlessly grovel through the directories and say "Should I do something here? Nope." The first time you encounter the directory you want to tell File::Find to short-circuit the search and go onto the next object in the filesystem. The following snippet should give you an idea about how to go about it:
#! /usr/bin/perl -w use strict; use File::Find; my $ignore = 'winnt'; find( sub { if( -d $_ and m{$ignore$}o ) { $File::Find::prune = 1; return; } print "$File::Find::name\n" if -f _; }, shift || '.' );
Tailor to suit your circumstances. You may have to worry about case-sensitivity of filenames (or not). You may also want to perform an exact match with eq instead of performing a regex match. You may want to exclude more than one directory.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: How do you exclude certain folder or directories from a search
by gnu@perl (Pilgrim) on Sep 04, 2002 at 14:30 UTC |