File::Find(3)

File::Find(3)

File::DosGlob Home Page Subroutines Index File::Path


NNAAMMEE
       find - traverse a file tree

       finddepth - traverse a directory structure depth-first

SSYYNNOOPPSSIISS
           use File::Find;
           find(\&wanted, '/foo','/bar');
           sub wanted { ... }

           use File::Find;
           finddepth(\&wanted, '/foo','/bar');
           sub wanted { ... }

DDEESSCCRRIIPPTTIIOONN
       The wanted() function does whatever verifications you
       want.  $File::Find::dir contains the current directory
       name, and $_ the current filename within that directory.
       $File::Find::name contains "$File::Find::dir/$_".  You are
       chdir()'d to $File::Find::dir when the function is called.
       The function may set $File::Find::prune to prune the tree.

       File::Find assumes that you don't alter the $_ variable.
       If you do then make sure you return it to its original
       value before exiting your function.

       This library is primarily for the find2perl 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 &&
               ($File::Find::prune = 1);
           }

       Set the variable $File::Find::dont_use_nlink if you're
       using AFS, since AFS cheats.

       finddepth is just like find, except that it does a depth-
       first search.

       Here's another interesting wanted function.  It will find
       all symlinks that don't resolve:

           sub wanted {
               -l && !-e && print "bogus link: $File::Find::name\n";
           }

BBUUGGSS
       There is no way to make find or finddepth follow symlinks.

File::DosGlob Home Page Subroutines Index File::Path