Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ File::Find(3) — IRIX 6.5.3f

Media Vault

Software Library

Restoration Projects

Artifacts Sought



File::Find(3)                                                    File::Find(3)



NAME
     find - traverse a file tree

     finddepth - traverse a directory structure depth-first

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

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


DESCRIPTION
     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.






                                                                        Page 1





File::Find(3)                                                    File::Find(3)



     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";
         }


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













































                                                                        Page 2



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026