840 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			840 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\"	$NetBSD: find.1,v 1.66 2007/07/19 07:49:30 daniel Exp $
 | |
| .\"
 | |
| .\" 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. 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.
 | |
| .\"
 | |
| .\"	from: @(#)find.1	8.7 (Berkeley) 5/9/95
 | |
| .\"
 | |
| .Dd July 19, 2007
 | |
| .Dt FIND 1
 | |
| .Os
 | |
| .Sh NAME
 | |
| .Nm find
 | |
| .Nd walk a file hierarchy
 | |
| .Sh SYNOPSIS
 | |
| .Nm
 | |
| .Op Fl H | Fl L | Fl P
 | |
| .Op Fl dEhsXx
 | |
| .Ar file
 | |
| .Op Ar file ...
 | |
| .Op Ar expression
 | |
| .Nm
 | |
| .Op Fl H | Fl L | Fl P
 | |
| .Op Fl dEhsXx
 | |
| .Fl f Ar file
 | |
| .Op Ar file ...
 | |
| .Op Ar expression
 | |
| .Sh DESCRIPTION
 | |
| .Nm
 | |
| recursively descends the directory tree for each
 | |
| .Ar file
 | |
| listed, evaluating an
 | |
| .Ar expression
 | |
| (composed of the
 | |
| .Dq primaries
 | |
| and
 | |
| .Dq 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 encountered 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 d
 | |
| The
 | |
| .Fl d
 | |
| option causes
 | |
| .Nm
 | |
| 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
 | |
| visits directories in pre-order, i.e., before their contents.
 | |
| Note, the default is
 | |
| .Ar not
 | |
| a breadth-first traversal.
 | |
| .It Fl E
 | |
| The
 | |
| .Fl E
 | |
| option causes
 | |
| .Ar regexp
 | |
| arguments to primaries to be interpreted as extended regular
 | |
| expressions (see
 | |
| .Xr re_format 7 ) .
 | |
| .It Fl f
 | |
| The
 | |
| .Fl f
 | |
| option specifies a file hierarchy for
 | |
| .Nm
 | |
| to traverse.
 | |
| File hierarchies may also be specified as the operands immediately
 | |
| following the options.
 | |
| .It Fl h
 | |
| The
 | |
| .Fl h
 | |
| 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 s
 | |
| The
 | |
| .Fl s
 | |
| option causes the entries of each directory to be sorted in
 | |
| lexicographical order.
 | |
| Note that the sorting is done only inside of each directory;
 | |
| files in different directories are not sorted.
 | |
| Therefore,
 | |
| .Sq Li a/b
 | |
| appears before
 | |
| .Sq Li a.b ,
 | |
| which is different from
 | |
| .Dq Li "find ... \&| sort"
 | |
| order.
 | |
| .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
 | |
| .Nm xargs ,
 | |
| a diagnostic message is displayed on standard error, and the file
 | |
| is skipped.
 | |
| The delimiting characters include single
 | |
| .Pq Dq \&'
 | |
| and double
 | |
| .Pq Dq \&"
 | |
| quotes, backslash
 | |
| .Pq Dq \e ,
 | |
| space, tab and newline characters.
 | |
| Alternatively, the
 | |
| .Ic -print0
 | |
| or
 | |
| .Ic -printx
 | |
| primaries can be used to format the output in a way that
 | |
| .Nm xargs
 | |
| can accept.
 | |
| .It Fl x
 | |
| The
 | |
| .Fl x
 | |
| option restricts the search to the file system containing the
 | |
| directory specified.
 | |
| Does not list mount points to other file systems.
 | |
| .El
 | |
| .Sh PRIMARIES
 | |
| .Bl -tag -width Ds
 | |
| .It Ic -amin Ar n
 | |
| True if the difference between the file last access time and the time
 | |
| .Nm
 | |
| was started, rounded up to the next full minute, is
 | |
| .Ar n
 | |
| minutes.
 | |
| .It Ic -anewer Ar file
 | |
| True if the current file has a more recent last access time than
 | |
| .Ar file  .
 | |
| .It Ic -atime Ar n
 | |
| True if the difference between the file last access time and the time
 | |
| .Nm
 | |
| was started, rounded up to the next full 24-hour period, is
 | |
| .Ar n
 | |
| 24-hour periods.
 | |
| .It Ic -cmin Ar n
 | |
| True if the difference between the time of last change of file status
 | |
| information and the time
 | |
| .Nm
 | |
| was started, rounded up to the next full minute, is
 | |
| .Ar n
 | |
| minutes.
 | |
| .It Ic -cnewer Ar file
 | |
| True if the current file has a more recent last change time than
 | |
| .Ar file  .
 | |
| .It Ic -ctime Ar n
 | |
| True if the difference between the time of last change of file status
 | |
| information and the time
 | |
| .Nm
 | |
| was started, rounded up to the next full 24-hour period, is
 | |
| .Ar n
 | |
| 24-hour periods.
 | |
| .It Ic -delete
 | |
| Delete found files and/or directories.
 | |
| Always returns True.
 | |
| This executes from the current working directory as
 | |
| .Nm
 | |
| recurses down the tree.
 | |
| It will not attempt to delete a filename with a
 | |
| .Dq \/
 | |
| character in its pathname relative to
 | |
| .Dq \.
 | |
| for security reasons.
 | |
| Depth-first traversal processing is implied by this option.
 | |
| This can also be invoked as
 | |
| .Ic -rm .
 | |
| .It Ic -empty
 | |
| True if the current file or directory is empty.
 | |
| .\" The ".sp" below is probably not the right way to get the desired effect.
 | |
| .It Ic -exec Ar utility Oo argument ... Oc No ;
 | |
| .sp -1l
 | |
| .It Ic -exec Ar utility Oo argument ... Oc No {} +
 | |
| Execute the specified
 | |
| .Ar utility
 | |
| with the specified arguments.
 | |
| The list of arguments is terminated by
 | |
| .Dq Li \&;
 | |
| or
 | |
| .Dq Li \&+ .
 | |
| .Ar utility
 | |
| will be executed from the directory from which
 | |
| .Nm
 | |
| was executed.
 | |
| .Pp
 | |
| If terminated by a semicolon
 | |
| .Pq Dq \&; ,
 | |
| the
 | |
| .Ar utility
 | |
| is invoked once per path.
 | |
| If the string
 | |
| .Dq {}
 | |
| appears anywhere in the utility name or the arguments,
 | |
| it is replaced by the pathname of the current file.
 | |
| .Pp
 | |
| If terminated by a plus sign
 | |
| .Pq Dq \&+ ,
 | |
| the pathnames for which the
 | |
| primary is evaluated are aggregated into sets, and
 | |
| .Ar utility
 | |
| will be invoked once per set, similar to
 | |
| .Xr xargs 1 .
 | |
| If any invocation exits with non-zero exit status, then
 | |
| .Nm
 | |
| will eventually do so as well, but this does not cause
 | |
| .Nm
 | |
| to exit early.
 | |
| The string
 | |
| .Dq {}
 | |
| must appear, and must appear last.
 | |
| Each set is limitted to no more than 5,000 pathnames,
 | |
| and is also limitted such that the invokation of
 | |
| .Ar utility
 | |
| does not exceed
 | |
| .Dv ARG_MAX .
 | |
| .It Ic -execdir Ar utility Oo argument ... Oc No ;
 | |
| The
 | |
| .Ic -execdir
 | |
| primary is similar to the semicolon-terminated
 | |
| .Pq Dq \&;
 | |
| variant of the
 | |
| .Ic -exec
 | |
| primary, with the exception that
 | |
| .Ar utility
 | |
| will be executed from the directory that holds
 | |
| the current file.
 | |
| The filename substituted for the string
 | |
| .Dq {}
 | |
| is not qualified.
 | |
| Set aggregation
 | |
| .Pq Do \&+ Dc termination
 | |
| is not supported.
 | |
| .It Ic -exit Op Ar n
 | |
| This primary causes
 | |
| .Nm
 | |
| to stop traversing the filesystem and exit immediately if a
 | |
| previous condition was met.
 | |
| If no value is specified, the exit value will be 0, else
 | |
| .Ar n .
 | |
| Note that other primaries will be evaluated and acted upon before exiting.
 | |
| .It Ic -false
 | |
| This primary always evaluates to false.
 | |
| This can be used following a primary that caused the
 | |
| expression to be true to make the expression to be false.
 | |
| This can be useful after using a
 | |
| .Ic -fprint
 | |
| primary so it can continue to the next expression (using an
 | |
| .Cm -or
 | |
| operator, for example).
 | |
| .It Ic -flags Oo Fl Oc Ns Ar flags
 | |
| If
 | |
| .Ar flags
 | |
| are preceded by a dash
 | |
| .Pq Dq - ,
 | |
| this primary evaluates to true
 | |
| if at least all of the bits in
 | |
| .Ar flags
 | |
| are set in the file's flags bits.
 | |
| If
 | |
| .Ar flags
 | |
| are not preceded by a dash, this primary evaluates to true if
 | |
| the bits in
 | |
| .Ar flags
 | |
| exactly match the file's flags bits.
 | |
| If
 | |
| .Ar flags
 | |
| is
 | |
| .Dq none ,
 | |
| files with no flags bits set are matched.
 | |
| (See
 | |
| .Xr chflags 1
 | |
| for more information about file flags.)
 | |
| .It Ic -follow
 | |
| Follow symbolic links.
 | |
| .It Ic -fprint Ar filename
 | |
| This primary always evaluates to true.
 | |
| This creates
 | |
| .Ar filename
 | |
| or overwrites the file if it already exists.
 | |
| The file is created at startup.
 | |
| It writes the pathname of the current file to this file, followed
 | |
| by a newline character.
 | |
| The file will be empty if no files are matched.
 | |
| .It Ic -fstype Ar type
 | |
| True if the file is contained in a file system of type
 | |
| .Ar type .
 | |
| The
 | |
| .Xr sysctl 8
 | |
| command can be used to find out the types of filesystems
 | |
| that are available on the system:
 | |
| .Bd -literal -offset indent
 | |
| sysctl vfs.generic.fstypes
 | |
| .Ed
 | |
| .Pp
 | |
| In addition, there are two pseudo-types,
 | |
| .Dq local
 | |
| and
 | |
| .Dq rdonly .
 | |
| The former matches any file system physically mounted on the system where
 | |
| the
 | |
| .Nm
 | |
| 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 -iname Ar pattern
 | |
| True if the last component of the pathname being examined
 | |
| matches
 | |
| .Ar pattern .
 | |
| Case insensitive.
 | |
| .It Ic -inum Ar n
 | |
| True if the file has inode number
 | |
| .Ar n  .
 | |
| .It Ic -iregex Ar regexp
 | |
| True if the path name of the current file matches the case-insensitive
 | |
| basic regular expression
 | |
| .Pq see Xr re_format 7
 | |
| .Ar regexp .
 | |
| This is a match on the whole path, not a search for the regular expression
 | |
| within the path.
 | |
| .It Ic -links Ar n
 | |
| True if the file has
 | |
| .Ar n
 | |
| links.
 | |
| .It Ic -rm
 | |
| This is an alias for
 | |
| .Ic -delete .
 | |
| .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
 | |
| .Dq -\*[Gt] .
 | |
| The format is identical to that produced by
 | |
| .Dq ls -dgils .
 | |
| .It Ic -maxdepth Ar n
 | |
| True if the current search depth is less than or equal to what is specified in
 | |
| .Ar n .
 | |
| .It Ic -mindepth Ar n
 | |
| True if the current search depth is at least what is specified in
 | |
| .Ar n .
 | |
| .It Ic -mmin Ar n
 | |
| True if the difference between the file last modification time and the time
 | |
| .Nm
 | |
| was started, rounded up to the next full minute, is
 | |
| .Ar n
 | |
| minutes.
 | |
| .It Ic -mtime Ar n
 | |
| True if the difference between the file last modification time and the time
 | |
| .Nm
 | |
| was started, rounded up to the next full 24-hour period, is
 | |
| .Ar n
 | |
| 24-hour periods.
 | |
| .It Ic -ok Ar utility Oo argument ... Oc No ;
 | |
| The
 | |
| .Ic -ok
 | |
| primary is similar to the semicolon-terminated
 | |
| .Pq Dq \&;
 | |
| variant of the
 | |
| .Ic -exec
 | |
| primary, with the exception that
 | |
| .Nm
 | |
| 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
 | |
| .Dq y ,
 | |
| the command is not executed and the
 | |
| .Ar -ok
 | |
| primary evaluates to false.
 | |
| Set aggregation
 | |
| .Pq Do \&+ Dc termination
 | |
| is not supported.
 | |
| .It Ic -name Ar pattern
 | |
| True if the last component of the pathname being examined matches
 | |
| .Ar pattern  .
 | |
| Special shell pattern matching characters
 | |
| .Po
 | |
| .Dq \&[ ,
 | |
| .Dq \&] ,
 | |
| .Dq \&* ,
 | |
| .Dq \&?
 | |
| .Pc
 | |
| may be used as part of
 | |
| .Ar pattern  .
 | |
| These characters may be matched explicitly by escaping them with a
 | |
| backslash
 | |
| .Pq Dq \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
 | |
| .Po
 | |
| .Dq \&[ ,
 | |
| .Dq \&] ,
 | |
| .Dq \&* ,
 | |
| and
 | |
| .Dq \&?
 | |
| .Pc
 | |
| may be used as part of
 | |
| .Ar pattern  .
 | |
| These characters may be matched explicitly by escaping them with a
 | |
| backslash
 | |
| .Pq Dq \e .
 | |
| Slashes
 | |
| .Pq Dq /
 | |
| are treated as normal characters and do not have to be
 | |
| matched explicitly.
 | |
| .It Ic -perm Oo Fl Oc 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
 | |
| .Pq Dq - ,
 | |
| 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
 | |
| .Pq Dq - .
 | |
| .It Ic -print
 | |
| This primary always evaluates to true.
 | |
| It prints the pathname of the current file to standard output, followed
 | |
| by a newline character.
 | |
| If none of
 | |
| .Ic -exec ,
 | |
| .Ic -exit ,
 | |
| .Ic -fprint ,
 | |
| .Ic -ls ,
 | |
| .Ic -ok ,
 | |
| .Ic -print0 ,
 | |
| nor
 | |
| .Ic -printx
 | |
| is specified, the given expression shall be effectively replaced by
 | |
| .Cm \&( Ns Ar given\& expression Ns Cm \&)
 | |
| .Ic -print .
 | |
| .It Ic -print0
 | |
| This primary always evaluates to true.
 | |
| It prints the pathname of the current file to standard output, followed
 | |
| by a null character.
 | |
| .It Ic -printx
 | |
| This primary always evaluates to true.
 | |
| It prints the pathname of the current file to standard output,
 | |
| with each space, tab, newline, backslash, dollar sign, and single,
 | |
| double, or back quotation mark prefixed by a backslash, so the output of
 | |
| .Nm find
 | |
| can safely be used as input to
 | |
| .Nm xargs .
 | |
| .It Ic -prune
 | |
| This primary always evaluates to true.
 | |
| It causes
 | |
| .Nm
 | |
| to not descend into the current file.
 | |
| Note, the
 | |
| .Ic -prune
 | |
| primary has no effect if the
 | |
| .Fl d
 | |
| option was specified.
 | |
| .It Ic -regex Ar regexp
 | |
| True if the path name of the current file matches the case-sensitive
 | |
| basic regular expression
 | |
| .Pq see Xr re_format 7
 | |
| .Ar regexp .
 | |
| This is a match on the whole path, not a search for the regular expression
 | |
| within the path.
 | |
| .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
 | |
| .Dq 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
 | |
| .It Cm W
 | |
| whiteout
 | |
| .It Cm w
 | |
| whiteout
 | |
| .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 (and considered a numeric argument).
 | |
| .It Ic -xdev
 | |
| This primary always evaluates to true.
 | |
| It causes find not to descend past directories that have a different
 | |
| device ID (st_dev, see
 | |
| .Xr stat 2
 | |
| S5.6.2 [POSIX.1]).
 | |
| .El
 | |
| .Pp
 | |
| All primaries which take a numeric argument allow the number to be
 | |
| preceded by a plus sign
 | |
| .Pq Dq +
 | |
| or a minus sign
 | |
| .Pq Dq \- .
 | |
| A preceding plus sign means
 | |
| .Dq more than n ,
 | |
| a preceding minus sign means
 | |
| .Dq less than n ,
 | |
| and neither means
 | |
| .Dq 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 \&( Ar expression Cm \&)
 | |
| This evaluates to true if the parenthesized expression evaluates to
 | |
| true.
 | |
| .Pp
 | |
| .It Cm \&! 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  .
 | |
| Primaries which themselves take arguments expect each argument
 | |
| to be a separate argument to
 | |
| .Nm  .
 | |
| .Sh EXIT STATUS
 | |
| The
 | |
| .Nm
 | |
| utility normally exits 0 on success, and exits with 1 under certain
 | |
| internal error conditions.
 | |
| If any invokations of
 | |
| .Dq Ic -exec Ar ... No +
 | |
| primaries return non-zero exit-status, then
 | |
| .Nm
 | |
| will do so as well.
 | |
| .Sh EXAMPLES
 | |
| 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
 | |
| .Dq \&.c .
 | |
| .It Li "find  /  -newer  ttt  -user  wnj  -print"
 | |
| Print out a list of all the files owned by user
 | |
| .Dq wnj
 | |
| that are newer than the file
 | |
| .Dq 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
 | |
| .Dq ttt
 | |
| and owned by
 | |
| .Dq 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
 | |
| .Dq wnj
 | |
| or that are newer than
 | |
| .Dq ttt .
 | |
| .It Li "find  /  \e(  -newer  ttt  -or  -user wnj  \e)  -exit 1"
 | |
| Return immediately with a value of 1 if any files are found that are either
 | |
| owned by
 | |
| .Dq wnj
 | |
| or that are newer than
 | |
| .Dq ttt ,
 | |
| but do not print them.
 | |
| .It Li "find  /  \e(  -newer  ttt  -or  -user wnj  \e)  -ls -exit 1"
 | |
| Same as above, but list the first file matching the criteria before exiting
 | |
| with a value of 1.
 | |
| .El
 | |
| .Sh SEE ALSO
 | |
| .Xr chflags 1 ,
 | |
| .Xr chmod 1 ,
 | |
| .Xr locate 1 ,
 | |
| .Xr xargs 1 ,
 | |
| .Xr stat 2 ,
 | |
| .Xr fts 3 ,
 | |
| .Xr getgrent 3 ,
 | |
| .Xr getpwent 3 ,
 | |
| .Xr strmode 3 ,
 | |
| .Xr symlink 7 ,
 | |
| .Xr sysctl 8
 | |
| .Sh STANDARDS
 | |
| The
 | |
| .Nm
 | |
| utility syntax is a superset of the syntax specified by the
 | |
| .St -p1003.2
 | |
| standard.
 | |
| .Pp
 | |
| The options and the
 | |
| .Ic -amin ,
 | |
| .Ic -anewer ,
 | |
| .Ic -cmin ,
 | |
| .Ic -cnewer ,
 | |
| .Ic -delete ,
 | |
| .Ic -empty ,
 | |
| .Ic -execdir ,
 | |
| .Ic -follow ,
 | |
| .Ic -fstype ,
 | |
| .Ic -iname ,
 | |
| .Ic -inum ,
 | |
| .Ic -iregex ,
 | |
| .Ic -links ,
 | |
| .Ic -ls ,
 | |
| .Ic -maxdepth ,
 | |
| .Ic -mindepth ,
 | |
| .Ic -mmin ,
 | |
| .Ic -path ,
 | |
| .Ic -print0 ,
 | |
| .Ic -printx ,
 | |
| .Ic -regex ,
 | |
| and
 | |
| .Ic -rm
 | |
| primaries are extensions to
 | |
| .St -p1003.2 .
 | |
| .Pp
 | |
| Historically, the
 | |
| .Fl d ,
 | |
| .Fl h ,
 | |
| and
 | |
| .Fl x
 | |
| options were implemented using the primaries
 | |
| .Dq -depth ,
 | |
| .Dq -follow ,
 | |
| and
 | |
| .Dq -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
 | |
| .Dq -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
 | |
| .Dq -or
 | |
| was implemented as
 | |
| .Dq -o ,
 | |
| and the operator
 | |
| .Dq -and
 | |
| was implemented as
 | |
| .Dq -a .
 | |
| .Pp
 | |
| Historic implementations of the
 | |
| .Ic -exec
 | |
| and
 | |
| .Ic -ok
 | |
| primaries did not replace the string
 | |
| .Dq {}
 | |
| 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.
 | |
| .Pp
 | |
| Support for
 | |
| .Dq Ic -exec Ar ... No +
 | |
| is consistent with
 | |
| .Em IEEE PASC Interpretation 1003.2 #210 ,
 | |
| though the feature originated in
 | |
| .Tn SVR4 .
 | |
| .Pp
 | |
| The
 | |
| .Ic -delete
 | |
| primary does not interact well with other options that cause the filesystem
 | |
| tree traversal options to be changed.
 | |
| .Sh HISTORY
 | |
| A much simpler
 | |
| .Nm find
 | |
| command appeared in First Edition AT\*[Am]T Unix.
 | |
| The syntax had become similar to the present version by
 | |
| the time of the Fifth Edition.
 | |
| .Sh BUGS
 | |
| The special characters used by
 | |
| .Nm
 | |
| are also special characters to many shell programs.
 | |
| In particular, the characters
 | |
| .Dq \&* ,
 | |
| .Dq \&[ ,
 | |
| .Dq \&] ,
 | |
| .Dq \&? ,
 | |
| .Dq \&( ,
 | |
| .Dq \&) ,
 | |
| .Dq \&! ,
 | |
| .Dq \e ,
 | |
| and
 | |
| .Dq \&;
 | |
| 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
 | |
| .Dq -xdev
 | |
| or
 | |
| .Dq \&! .
 | |
| These problems are handled by the
 | |
| .Fl f
 | |
| option and the
 | |
| .Xr getopt 3
 | |
| .Dq --
 | |
| construct.
 | 
