FIND(3) USER COMMANDS FIND(3)
NAME
find - ファイルトリーのトラバースする
SYNOPSYS
use File::Find;
find(\&wanted, '/foo','/bar');
sub wanted { ... }
DESCRIPTION
関数 wanted() では、何でも自由に確認を行うことができます。
このとき $dir には、現在のディレクトリ名が、$_ には、そのデ
ィレクトリ内の現在のファイル名が入っています。 また、$name
は "$dir/$_" を表わします。 この関数が呼ばれたときには、
$dir へ chdir() しています。 この関数で $prune を設定すると、
トリーの枝刈りができ、その枝の以降の検索を行ないません。
このライブラリは、もともと find2perl ツールのためのもので、
find2perl / -name .nfs\* -mtime +7 \
-exec rm -f {} \; -o -fstype nfs -prune
とすると、
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);
}
のような出力が得られます。
AFS を使っているときには、AFS にごまかされないように、変数
$dont_use_nlink を設定してください。
もう一つ、おもしろい wanted 関数を示します。 これは、実体の
無いすべてのシンボリックリンクを探し出すものです:
sub wanted {
-l && !-e && print "bogus link: $name\n";
}
Perl module manpages Last change: Release 5.0 Patchlevel 00 1