=head1 NAME find - traverse a file tree =head1 SYNOPSYS use File::Find; find(\&wanted, '/foo','/bar'); sub wanted { ... } =head1 DESCRIPTION The wanted() function does whatever verificationsyou want. $dir contains the current directory name, and $_ the current filename within that directory. $name contains C<"$dir/$_">. You are chdir()'d to $dir when the function is called. The function may set $prune to prune the tree. This library is primarily for the C tool, which when fed, find2perl / -name .nfs\* -mtime +7 \ -exec rm -f {} \; -o -fstype nfs -prune produces something like: sub wanted { /^\.nfs.*$/ && (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) && int(-M _) > 7 && unlink($_) || ($nlink || (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_))) && $dev < 0 && ($prune = 1); } Set the variable $dont_use_nlink if you're using AFS, since AFS cheats. Here's another interesting wanted function. It will find all symlinks that don't resolve: sub wanted { -l && !-e && print "bogus link: $name\n"; }