diff options
Diffstat (limited to 'usr.bin/find/find.1')
-rw-r--r-- | usr.bin/find/find.1 | 454 |
1 files changed, 454 insertions, 0 deletions
diff --git a/usr.bin/find/find.1 b/usr.bin/find/find.1 new file mode 100644 index 0000000..6523bba --- /dev/null +++ b/usr.bin/find/find.1 @@ -0,0 +1,454 @@ +.\" Copyright (c) 1990, 1993 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" This code is derived from software contributed to Berkeley by +.\" the Institute of Electrical and Electronics Engineers, Inc. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)find.1 8.4 (Berkeley) 4/1/94 +.\" +.Dd April 1, 1994 +.Dt FIND 1 +.Os +.Sh NAME +.Nm find +.Nd walk a file hierarchy +.Sh SYNOPSIS +.Nm find +.Op Fl H | Fl L | Fl P +.Op Fl Xdx +.Op Fl f Ar file +.Op Ar file ... +.Ar expression +.Sh DESCRIPTION +.Nm Find +recursively descends the directory tree for each +.Ar file +listed, evaluating an +.Ar expression +(composed of the ``primaries'' and ``operands'' listed below) in terms +of each file in the tree. +.Pp +The options are as follows: +.Pp +.Bl -tag -width Ds +.It Fl H +The +.Fl H +option causes the file information and file type (see +.Xr stat 2) +returned for each symbolic link specified on the command line to be +those of the file referenced by the link, not the link itself. +If the referenced file does not exist, the file information and type will +be for the link itself. File information of all symbolic links not on +the command line is that of the link itself. +.It Fl L +The +.Fl L +option causes the file information and file type (see +.Xr stat 2) +returned for each symbolic link to be those of the file referenced by the +link, not the link itself. +If the referenced file does not exist, the file information and type will +be for the link itself. +.It Fl P +The +.Fl P +option causes the file information and file type (see +.Xr stat 2) +returned for each symbolic link to be those of the link itself. +.It Fl X +The +.Fl X +option is a modification to permit +.Nm +to be safely used in conjunction with +.Xr xargs 1 . +If a file name contains any of the delimiting characters used by +.Xr xargs , +a diagnostic message is displayed on standard error, and the file +is skipped. +The delimiting characters include single (`` ' '') and double (`` " '') +quotes, backslash (``\e''), space, tab and newline characters. +.It Fl d +The +.Fl d +option causes +.Nm find +to perform a depth\-first traversal, i.e. directories +are visited in post\-order and all entries in a directory will be acted +on before the directory itself. +By default, +.Nm find +visits directories in pre\-order, i.e. before their contents. +Note, the default is +.Ar not +a breadth\-first traversal. +.It Fl f +The +.Fl f +option specifies a file hierarchy for +.Nm find +to traverse. +File hierarchies may also be specified as the operands immediately +following the options. +.It Fl x +The +.Fl x +option prevents +.Nm find +from descending into directories that have a device number different +than that of the file from which the descent began. +.El +.Sh PRIMARIES +.Bl -tag -width Ds +.It Ic -atime Ar n +True if the difference between the file last access time and the time +.Nm find +was started, rounded up to the next full 24\-hour period, is +.Ar n +24\-hour periods. +.It Ic -ctime Ar n +True if the difference between the time of last change of file status +information and the time +.Nm find +was started, rounded up to the next full 24\-hour period, is +.Ar n +24\-hour periods. +.It Ic -exec Ar utility Op argument ... ; +True if the program named +.Ar utility +returns a zero value as its exit status. +Optional arguments may be passed to the utility. +The expression must be terminated by a semicolon (``;''). +If the string ``{}'' appears anywhere in the utility name or the +arguments it is replaced by the pathname of the current file. +.Ar Utility +will be executed from the directory from which +.Nm find +was executed. +.It Ic -fstype Ar type +True if the file is contained in a file system of type +.Ar type . +Currently supported types are ``local'', ``mfs'', ``nfs'', ``msdos'', +``rdonly'' and ``ufs''. +The types ``local'' and ``rdonly'' are not specific file system types. +The former matches any file system physically mounted on the system where +the +.Nm find +is being executed and the latter matches any file system which is +mounted read-only. +.It Ic -group Ar gname +True if the file belongs to the group +.Ar gname . +If +.Ar gname +is numeric and there is no such group name, then +.Ar gname +is treated as a group id. +.It Ic -inum Ar n +True if the file has inode number +.Ar n . +.It Ic -links Ar n +True if the file has +.Ar n +links. +.It Ic -ls +This primary always evaluates to true. +The following information for the current file is written to standard output: +its inode number, size in 512\-byte blocks, file permissions, number of hard +links, owner, group, size in bytes, last modification time, and pathname. +If the file is a block or character special file, the major and minor numbers +will be displayed instead of the size in bytes. +If the file is a symbolic link, the pathname of the linked\-to file will be +displayed preceded by ``\->''. +The format is identical to that produced by ``ls \-dgils''. +.It Ic -mtime Ar n +True if the difference between the file last modification time and the time +.Nm find +was started, rounded up to the next full 24\-hour period, is +.Ar n +24\-hour periods. +.It Ic \&-ok Ar utility Ns Op argument ... ; +The +.Ic \&-ok +primary is identical to the +.Ic -exec +primary with the exception that +.Nm find +requests user affirmation for the execution of the utility by printing +a message to the terminal and reading a response. +If the response is other than ``y'' the command is not executed and the +value of the +.Ar \&ok +expression is false. +.It Ic -name Ar pattern +True if the last component of the pathname being examined matches +.Ar pattern . +Special shell pattern matching characters (``['', ``]'', ``*'', and ``?'') +may be used as part of +.Ar pattern . +These characters may be matched explicitly by escaping them with a +backslash (``\e''). +.It Ic -newer Ar file +True if the current file has a more recent last modification time than +.Ar file . +.It Ic -nouser +True if the file belongs to an unknown user. +.It Ic -nogroup +True if the file belongs to an unknown group. +.It Ic -path Ar pattern +True if the pathname being examined matches +.Ar pattern . +Special shell pattern matching characters (``['', ``]'', ``*'', and ``?'') +may be used as part of +.Ar pattern . +These characters may be matched explicitly by escaping them with a +backslash (``\e''). +Slashes (``/'') are treated as normal characters and do not have to be +matched explicitly. +.It Ic -perm Op Fl Ns Ar mode +The +.Ar mode +may be either symbolic (see +.Xr chmod 1 ) +or an octal number. +If the mode is symbolic, a starting value of zero is assumed and the +mode sets or clears permissions without regard to the process' file mode +creation mask. +If the mode is octal, only bits 07777 +.Pf ( Dv S_ISUID +| +.Dv S_ISGID +| +.Dv S_ISTXT +| +.Dv S_IRWXU +| +.Dv S_IRWXG +| +.Dv S_IRWXO ) +of the file's mode bits participate +in the comparison. +If the mode is preceded by a dash (``\-''), this primary evaluates to true +if at least all of the bits in the mode are set in the file's mode bits. +If the mode is not preceded by a dash, this primary evaluates to true if +the bits in the mode exactly match the file's mode bits. +Note, the first character of a symbolic mode may not be a dash (``\-''). +.It Ic -print +This primary always evaluates to true. +It prints the pathname of the current file to standard output. +The expression is appended to the user specified expression if neither +.Ic -exec , +.Ic -ls +or +.Ic \&-ok +is specified. +.It Ic -prune +This primary always evaluates to true. +It causes +.Nm find +to not descend into the current file. +Note, the +.Ic -prune +primary has no effect if the +.Fl d +option was specified. +.It Ic -size Ar n Ns Op Cm c +True if the file's size, rounded up, in 512\-byte blocks is +.Ar n . +If +.Ar n +is followed by a ``c'', then the primary is true if the +file's size is +.Ar n +bytes. +.It Ic -type Ar t +True if the file is of the specified type. +Possible file types are as follows: +.Pp +.Bl -tag -width flag -offset indent -compact +.It Cm b +block special +.It Cm c +character special +.It Cm d +directory +.It Cm f +regular file +.It Cm l +symbolic link +.It Cm p +FIFO +.It Cm s +socket +.El +.Pp +.It Ic -user Ar uname +True if the file belongs to the user +.Ar uname . +If +.Ar uname +is numeric and there is no such user name, then +.Ar uname +is treated as a user id. +.El +.Pp +All primaries which take a numeric argument allow the number to be +preceded by a plus sign (``+'') or a minus sign (``\-''). +A preceding plus sign means ``more than n'', a preceding minus sign means +``less than n'' and neither means ``exactly n'' . +.Sh OPERATORS +The primaries may be combined using the following operators. +The operators are listed in order of decreasing precedence. +.Bl -tag -width (expression) +.It Cm \&( Ns Ar expression Ns Cm \&) +This evaluates to true if the parenthesized expression evaluates to +true. +.Pp +.It Cm \&! Ns Ar expression +This is the unary +.Tn NOT +operator. +It evaluates to true if the expression is false. +.Pp +.It Ar expression Cm -and Ar expression +.It Ar expression expression +The +.Cm -and +operator is the logical +.Tn AND +operator. +As it is implied by the juxtaposition of two expressions it does not +have to be specified. +The expression evaluates to true if both expressions are true. +The second expression is not evaluated if the first expression is false. +.Pp +.It Ar expression Cm -or Ar expression +The +.Cm -or +operator is the logical +.Tn OR +operator. +The expression evaluates to true if either the first or the second expression +is true. +The second expression is not evaluated if the first expression is true. +.El +.Pp +All operands and primaries must be separate arguments to +.Nm find . +Primaries which themselves take arguments expect each argument +to be a separate argument to +.Nm find . +.Sh EXAMPLES +.Pp +The following examples are shown as given to the shell: +.Bl -tag -width findx +.It Li "find / \e! -name \*q*.c\*q -print" +Print out a list of all the files whose names do not end in ``.c''. +.It Li "find / -newer ttt -user wnj -print" +Print out a list of all the files owned by user ``wnj'' that are newer +than the file ``ttt''. +.It Li "find / \e! \e( -newer ttt -user wnj \e) -print" +Print out a list of all the files which are not both newer than ``ttt'' +and owned by ``wnj''. +.It Li "find / \e( -newer ttt -or -user wnj \e) -print" +Print out a list of all the files that are either owned by ``wnj'' or +that are newer than ``ttt''. +.El +.Sh SEE ALSO +.Xr chmod 1 , +.Xr locate 1 , +.Xr stat 2 , +.Xr fts 3 , +.Xr getgrent 3 , +.Xr getpwent 3 , +.Xr strmode 3 , +.Xr symlink 7 +.Sh STANDARDS +The +.Nm find +utility syntax is a superset of the syntax specified by the +.St -p1003.2 +standard. +.Pp +The +.Fl s +and +.Fl X +options and the +.Ic -inum +and +.Ic -ls +primaries are extensions to +.St -p1003.2 . +.Pp +Historically, the +.Fl d , +.Fl h +and +.Fl x +options were implemented using the primaries ``\-depth'', ``\-follow'', +and ``\-xdev''. +These primaries always evaluated to true. +As they were really global variables that took effect before the traversal +began, some legal expressions could have unexpected results. +An example is the expression ``\-print \-o \-depth''. +As \-print always evaluates to true, the standard order of evaluation +implies that \-depth would never be evaluated. +This is not the case. +.Pp +The operator ``-or'' was implemented as ``\-o'', and the operator ``-and'' +was implemented as ``\-a''. +.Pp +Historic implementations of the +.Ic exec +and +.Ic ok +primaries did not replace the string ``{}'' in the utility name or the +utility arguments if it had preceding or following non-whitespace characters. +This version replaces it no matter where in the utility name or arguments +it appears. +.Sh BUGS +The special characters used by +.Nm find +are also special characters to many shell programs. +In particular, the characters ``*'', ``['', ``]'', ``?'', ``('', ``)'', +``!'', ``\e'' and ``;'' may have to be escaped from the shell. +.Pp +As there is no delimiter separating options and file names or file +names and the +.Ar expression , +it is difficult to specify files named ``-xdev'' or ``!''. +These problems are handled by the +.Fl f +option and the +.Xr getopt 3 +``--'' construct. |