📄 file::find.3
字号:
.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05).\".\" Standard preamble:.\" ========================================================================.de Sh \" Subsection heading.br.if t .Sp.ne 5.PP\fB\\$1\fR.PP...de Sp \" Vertical space (when we can't use .PP).if t .sp .5v.if n .sp...de Vb \" Begin verbatim text.ft CW.nf.ne \\$1...de Ve \" End verbatim text.ft R.fi...\" Set up some character translations and predefined strings. \*(-- will.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left.\" double quote, and \*(R" will give a right double quote. \*(C+ will.\" give a nicer C++. Capital omega is used to do unbreakable dashes and.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,.\" nothing in troff, for use with C<>..tr \(*W-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'.ie n \{\. ds -- \(*W-. ds PI pi. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch. ds L" "". ds R" "". ds C` "". ds C' ""'br\}.el\{\. ds -- \|\(em\|. ds PI \(*p. ds L" ``. ds R" '''br\}.\".\" Escape single quotes in literal strings from groff's Unicode transform..ie \n(.g .ds Aq \(aq.el .ds Aq '.\".\" If the F register is turned on, we'll generate index entries on stderr for.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index.\" entries marked with X<> in POD. Of course, you'll have to process the.\" output yourself in some meaningful fashion..ie \nF \{\. de IX. tm Index:\\$1\t\\n%\t"\\$2"... nr % 0. rr F.\}.el \{\. de IX...\}.\".\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2)..\" Fear. Run. Save yourself. No user-serviceable parts.. \" fudge factors for nroff and troff.if n \{\. ds #H 0. ds #V .8m. ds #F .3m. ds #[ \f1. ds #] \fP.\}.if t \{\. ds #H ((1u-(\\\\n(.fu%2u))*.13m). ds #V .6m. ds #F 0. ds #[ \&. ds #] \&.\}. \" simple accents for nroff and troff.if n \{\. ds ' \&. ds ` \&. ds ^ \&. ds , \&. ds ~ ~. ds /.\}.if t \{\. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u". ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'.\}. \" troff and (daisy-wheel) nroff accents.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'.ds 8 \h'\*(#H'\(*b\h'-\*(#H'.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#].ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#].ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#].ds ae a\h'-(\w'a'u*4/10)'e.ds Ae A\h'-(\w'A'u*4/10)'E. \" corrections for vroff.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'. \" for low resolution devices (crt and lpr).if \n(.H>23 .if \n(.V>19 \\{\. ds : e. ds 8 ss. ds o a. ds d- d\h'-1'\(ga. ds D- D\h'-1'\(hy. ds th \o'bp'. ds Th \o'LP'. ds ae ae. ds Ae AE.\}.rm #[ #] #H #V #F C.\" ========================================================================.\".IX Title "File::Find 3".TH File::Find 3 "2007-12-18" "perl v5.10.0" "Perl Programmers Reference Guide".\" For nroff, turn off justification. Always turn off hyphenation; it makes.\" way too many mistakes in technical documents..if n .ad l.nh.SH "NAME"File::Find \- Traverse a directory tree..SH "SYNOPSIS".IX Header "SYNOPSIS".Vb 3\& use File::Find;\& find(\e&wanted, @directories_to_search);\& sub wanted { ... }\&\& use File::Find;\& finddepth(\e&wanted, @directories_to_search);\& sub wanted { ... }\&\& use File::Find;\& find({ wanted => \e&process, follow => 1 }, \*(Aq.\*(Aq);.Ve.SH "DESCRIPTION".IX Header "DESCRIPTION"These are functions for searching through directory trees doing workon each file found similar to the Unix \fIfind\fR command. File::Findexports two functions, \f(CW\*(C`find\*(C'\fR and \f(CW\*(C`finddepth\*(C'\fR. They work similarlybut have subtle differences..IP "\fBfind\fR" 4.IX Item "find".Vb 2\& find(\e&wanted, @directories);\& find(\e%options, @directories);.Ve.Sp\&\f(CW\*(C`find()\*(C'\fR does a depth-first search over the given \f(CW@directories\fR inthe order they are given. For each file or directory found, it callsthe \f(CW&wanted\fR subroutine. (See below for details on how to use the\&\f(CW&wanted\fR function). Additionally, for each directory found, it will\&\f(CW\*(C`chdir()\*(C'\fR into that directory and continue the search, invoking the\&\f(CW&wanted\fR function on each file or subdirectory in the directory..IP "\fBfinddepth\fR" 4.IX Item "finddepth".Vb 2\& finddepth(\e&wanted, @directories);\& finddepth(\e%options, @directories);.Ve.Sp\&\f(CW\*(C`finddepth()\*(C'\fR works just like \f(CW\*(C`find()\*(C'\fR except that it invokes the\&\f(CW&wanted\fR function for a directory \fIafter\fR invoking it for thedirectory's contents. It does a postorder traversal instead of apreorder traversal, working from the bottom of the directory tree upwhere \f(CW\*(C`find()\*(C'\fR works from the top of the tree down..ie n .Sh "%options".el .Sh "\f(CW%options\fP".IX Subsection "%options"The first argument to \f(CW\*(C`find()\*(C'\fR is either a code reference to your\&\f(CW&wanted\fR function, or a hash reference describing the operationsto be performed for each file. Thecode reference is described in \*(L"The wanted function\*(R" below..PPHere are the possible keys for the hash:.ie n .IP """wanted""" 3.el .IP "\f(CWwanted\fR" 3.IX Item "wanted"The value should be a code reference. This code reference isdescribed in \*(L"The wanted function\*(R" below..ie n .IP """bydepth""" 3.el .IP "\f(CWbydepth\fR" 3.IX Item "bydepth"Reports the name of a directory only \s-1AFTER\s0 all its entrieshave been reported. Entry point \f(CW\*(C`finddepth()\*(C'\fR is a shortcut forspecifying \f(CW\*(C`<{ bydepth =\*(C'\fR 1 }>> in the first argument of \f(CW\*(C`find()\*(C'\fR..ie n .IP """preprocess""" 3.el .IP "\f(CWpreprocess\fR" 3.IX Item "preprocess"The value should be a code reference. This code reference is used topreprocess the current directory. The name of the currently processeddirectory is in \f(CW$File::Find::dir\fR. Your preprocessing function iscalled after \f(CW\*(C`readdir()\*(C'\fR, but before the loop that calls the \f(CW\*(C`wanted()\*(C'\fRfunction. It is called with a list of strings (actually file/directorynames) and is expected to return a list of strings. The code can beused to sort the file/directory names alphabetically, numerically,or to filter out directory entries based on their name alone. When\&\fIfollow\fR or \fIfollow_fast\fR are in effect, \f(CW\*(C`preprocess\*(C'\fR is a no-op..ie n .IP """postprocess""" 3.el .IP "\f(CWpostprocess\fR" 3.IX Item "postprocess"The value should be a code reference. It is invoked just before leavingthe currently processed directory. It is called in void context with noarguments. The name of the current directory is in \f(CW$File::Find::dir\fR. Thishook is handy for summarizing a directory, such as calculating its diskusage. When \fIfollow\fR or \fIfollow_fast\fR are in effect, \f(CW\*(C`postprocess\*(C'\fR is ano-op..ie n .IP """follow""" 3.el .IP "\f(CWfollow\fR" 3.IX Item "follow"Causes symbolic links to be followed. Since directory trees with symboliclinks (followed) may contain files more than once and may even havecycles, a hash has to be built up with an entry for each file.This might be expensive both in space and time for a largedirectory tree. See \fIfollow_fast\fR and \fIfollow_skip\fR below.If either \fIfollow\fR or \fIfollow_fast\fR is in effect:.RS 3.IP "\(bu" 6It is guaranteed that an \fIlstat\fR has been called before the user's\&\f(CW\*(C`wanted()\*(C'\fR function is called. This enables fast file checks involving _.Note that this guarantee no longer holds if \fIfollow\fR or \fIfollow_fast\fRare not set..IP "\(bu" 6There is a variable \f(CW$File::Find::fullname\fR which holds the absolutepathname of the file with all symbolic links resolved. If the link isa dangling symbolic link, then fullname will be set to \f(CW\*(C`undef\*(C'\fR..RE.RS 3.SpThis is a no-op on Win32..RE.ie n .IP """follow_fast""" 3.el .IP "\f(CWfollow_fast\fR" 3.IX Item "follow_fast"This is similar to \fIfollow\fR except that it may report some files morethan once. It does detect cycles, however. Since only symbolic linkshave to be hashed, this is much cheaper both in space and time. Ifprocessing a file more than once (by the user's \f(CW\*(C`wanted()\*(C'\fR function)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -