File/Find

Section: Perl Programmers Reference Guide (3)
Updated: perl 5.003 with
Index Return to Main Contents
 

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.

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



 

Index

NAME
SYNOPSIS
DESCRIPTION

This document was created by man2html, using the manual pages.
Time: 15:34:41 GMT, January 15, 2023