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.
In reply to Re: How do you exclude certain folder or directories from a search
by grinder
in thread How do you exclude certain folder or directories from a search
by kirk123
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |