[14489] | 1 | # Usage:
|
---|
| 2 | # require "finddepth.pl";
|
---|
| 3 | #
|
---|
| 4 | # &finddepth('/foo','/bar');
|
---|
| 5 | #
|
---|
| 6 | # sub wanted { ... }
|
---|
| 7 | # where wanted does whatever you want. $dir contains the
|
---|
| 8 | # current directory name, and $_ the current filename within
|
---|
| 9 | # that directory. $name contains "$dir/$_". You are cd'ed
|
---|
| 10 | # to $dir when the function is called. The function may
|
---|
| 11 | # set $prune to prune the tree.
|
---|
| 12 | #
|
---|
| 13 | # This library is primarily for find2perl, which, when fed
|
---|
| 14 | #
|
---|
| 15 | # find2perl / -name .nfs\* -mtime +7 -exec rm -f {} \; -o -fstype nfs -prune
|
---|
| 16 | #
|
---|
| 17 | # spits out something like this
|
---|
| 18 | #
|
---|
| 19 | # sub wanted {
|
---|
| 20 | # /^\.nfs.*$/ &&
|
---|
| 21 | # (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
|
---|
| 22 | # int(-M _) > 7 &&
|
---|
| 23 | # unlink($_)
|
---|
| 24 | # ||
|
---|
| 25 | # ($nlink || (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_))) &&
|
---|
| 26 | # $dev < 0 &&
|
---|
| 27 | # ($prune = 1);
|
---|
| 28 | # }
|
---|
| 29 |
|
---|
| 30 |
|
---|
| 31 | use File::Find ();
|
---|
| 32 |
|
---|
| 33 | *name = *File::Find::name;
|
---|
| 34 | *prune = *File::Find::prune;
|
---|
| 35 | *dir = *File::Find::dir;
|
---|
| 36 | *topdir = *File::Find::topdir;
|
---|
| 37 | *topdev = *File::Find::topdev;
|
---|
| 38 | *topino = *File::Find::topino;
|
---|
| 39 | *topmode = *File::Find::topmode;
|
---|
| 40 | *topnlink = *File::Find::topnlink;
|
---|
| 41 |
|
---|
| 42 | sub finddepth {
|
---|
| 43 | &File::Find::finddepth(\&wanted, @_);
|
---|
| 44 | }
|
---|
| 45 |
|
---|
| 46 | 1;
|
---|