summaryrefslogtreecommitdiff
path: root/usr.bin/find/find.1
diff options
context:
space:
mode:
authorKiyoshi Aman <kiyoshi.aman+adelie@gmail.com>2019-06-02 05:39:48 -0500
committerKiyoshi Aman <kiyoshi.aman+adelie@gmail.com>2019-06-02 05:40:06 -0500
commit09863a10639de265b2299938a292bba15abc570a (patch)
tree1628e509cdc1915d25e54957275d8c865988d260 /usr.bin/find/find.1
parent93d303d88ac036537c09d8fdc7ff80258826463a (diff)
downloaduserland-09863a10639de265b2299938a292bba15abc570a.tar.gz
userland-09863a10639de265b2299938a292bba15abc570a.tar.bz2
userland-09863a10639de265b2299938a292bba15abc570a.tar.xz
userland-09863a10639de265b2299938a292bba15abc570a.zip
usr.bin/find: replace with heirloom find
Diffstat (limited to 'usr.bin/find/find.1')
-rw-r--r--usr.bin/find/find.11488
1 files changed, 536 insertions, 952 deletions
diff --git a/usr.bin/find/find.1 b/usr.bin/find/find.1
index 60ce94a..a12b404 100644
--- a/usr.bin/find/find.1
+++ b/usr.bin/find/find.1
@@ -1,974 +1,558 @@
-.\" $NetBSD: find.1,v 1.89 2017/07/03 21:34:57 wiz 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.
+'\" t
+.\" Sccsid @(#)find.1 1.44 (gritter) 8/14/05
+.\" Parts taken from find(1), Unix 7th edition:
+.\" Copyright(C) Caldera International Inc. 2001-2002. All rights reserved.
.\"
.\" 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
+.\" Redistributions of source code and documentation must retain the
+.\" above copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\" 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.
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc.
+.\" Neither the name of Caldera International, Inc. nor the names of
+.\" other contributors may be used to endorse or promote products
+.\" derived from this software without specific prior written permission.
.\"
-.\" from: @(#)find.1 8.7 (Berkeley) 5/9/95
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, INC. 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 CALDERA INTERNATIONAL, INC. 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.
.\"
-.Dd June 13, 2016
-.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
+.TH FIND 1 "8/14/05" "Heirloom Toolchest" "User Commands"
+.SH NAME
+find \- find files
+.SH SYNOPSIS
+.B find
+.I pathname-list expression
+.SH DESCRIPTION
+.I Find
+recursively descends
+the directory hierarchy for
+each pathname in the
+.I pathname-list
+(i.\|e., one or more pathnames)
+seeking files that match a boolean
+.I expression
+written in the primaries given below.
+In the descriptions, the argument
+.I n
+is used as a decimal integer
+where
+.I +n
+means more than
+.I n,
+.I \-n
+means less than
+.I n
and
-.Dq operands
-listed below) in terms
-of each file in the tree.
-.Pp
-The options are as follows:
-.Bl -tag -width Ds
-.It Fl H
-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
-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
-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
-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
-.Em not
-a breadth-first traversal.
-.It Fl E
-Causes
-.Ar regexp
-arguments to primaries to be interpreted as extended regular
-expressions (see
-.Xr re_format 7 ) .
-.It Fl f
-Specifies a file hierarchy for
-.Nm
-to traverse.
-File hierarchies may also be specified as the operands immediately
-following the options.
-.It Fl h
-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
-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
-Modifies the output 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 1 ,
-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
-.Xr xargs 1
-can accept.
-.It Fl x
-Restricts the search to the file system containing the
-directory specified.
-Does not list mount points to other file systems.
-.El
-.Sh PRIMARIES
-All primaries which take a numeric argument of
-.Ar n
-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 Ar n ,
-a preceding minus sign means
-.Dq less than Ar n ,
-and neither means
-.Dq exactly Ar n .
-(The argument specified for the
-.Ic -user
+.I n
+means exactly
+.IR n .
+.TP 10n
+.BR \-name " filename"
+True if the
+.I filename
+argument matches the current file name.
+Normal
+Shell
+argument syntax
+as described in
+.IR glob (7)
+may be used if escaped (watch out for
+`[', `?' and `*').
+The internationalization constructs
+`[[:class:]]', `[[=e=]]', and `[[.cs.]]'
+are understood with
+.BR /usr/5bin/s42/find ,
+.BR /usr/5bin/posix/find ,
and
-.Ic -group
-primaries
-are similarly treated if the value is numeric and does not correspond to a
-valid user or group name.)
-.Pp
-For primaries which take a
-.Ar timestamp
-argument, the argument must be valid input to
-.Xr parsedate 3 .
-If the argument contains multiple words, enclose the argument in quotes.
-.Pp
-.Bl -tag -width Ds -compact
-.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.
-.Pp
-.It Ic -anewer Ar file
-True if the current file has a more recent last access time than
-.Ar file .
-.Pp
-.It Ic -asince Ar timestamp
-True if the file last access time is greater than the specified
-.Ar timestamp .
-.Pp
-.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.
-.Pp
-.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.
-.Pp
-.It Ic -cnewer Ar file
-True if the current file has a more recent last change time than
-.Ar file .
-.Pp
-.It Ic -csince Ar timestamp
-True if the file last status change time is greater than the specified
-.Ar timestamp .
-.Pp
-.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.
-.Pp
-.It Ic -delete
-Delete found files, symbolic links, and directories.
-Always returns true.
-This executes from the current working directory as
-.Nm
-recurses down the tree.
-To avoid deleting unexpected files, it will ignore any filenames that
-.Xr fts 3
-returns that contain a
-.Dq /
-.Xr ( fts 3
-should not return such pathnames).
-Depth-first traversal processing is implied by this option.
-This primary can also be invoked as
-.Ic -rm .
-.Pp
-.It Ic -empty
-True if the current file or directory is empty.
-.Pp
-.It Ic -exec Ar utility Oo argument ... Oc Ic \&;
-.It Ic -exec Ar utility Oo argument ... Oc Ic {} Ic \&+
-Execute the specified
-.Ar utility
-with the specified arguments.
-.Pp
-The list of arguments for
-.Ar utility
-is terminated by a lone semicolon
-.Dq Ic \&;
-or plus
-.Dq Ic \&+
-character as a separate parameter.
-The command specified by
-.Ar utility
-will be executed with its current working directory being the directory
-from which
-.Nm
-was executed.
-.Pp
-If the list of arguments is terminated by a semicolon
-.Pq Dq Ic \&; ,
-then
-.Ar utility
-is invoked once per pathname.
-If
-the string
-.Dq Ic {}
-appears one or more times in the utility name or arguments,
-then it is replaced by the pathname of the current file
-(but it need not appear, in which case the pathname
-will not be passed to
-.Ar utility ) .
-The semicolon-terminated form of the
-.Ic -exec
-primary returns true if and only if
-.Ar utility
-exits with a zero exit status.
-Note that the semicolon will have to be escaped on the shell command line
-in order to be passed as a parameter.
-.Pp
-If the list of arguments is terminated by a plus sign
-.Pq Dq Ic \&+ ,
-then 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 .
-In this case the string
-.Dq Ic {}
-must appear, and must appear as the last item in the argument list,
-just before the
-.Dq Ic \&+
-parameter, and is replaced by the pathnames of the current set of files.
-Each set is limited to no more than 5,000 pathnames,
-and is also limited such that the total number of bytes in the argument
-list does not exceed
-.Dv ARG_MAX .
-The plus-terminated form of the
-.Ic -exec
-primary always returns true.
-If the plus-terminated form of the
-.Ic -exec
-primary results in any invocation of
-.Ar utility
-exiting with non-zero exit status, then
-.Nm
-will eventually exit with non-zero status as well,
-but this does not cause
-.Nm
-to exit early.
-.Pp
-.It Ic -execdir Ar utility Oo argument ... Oc Ic \&;
-The
-.Ic -execdir
-primary is similar to the semicolon-terminated
-.Pq Dq Ic \&;
-variant of the
-.Ic -exec
-primary, with the exception that
-.Ar utility
-will be executed from the directory that holds
-the current file.
-Only the base filename is substituted for the string
-.Dq Ic {} .
-Set aggregation
-.Pq Do Ic \&+ Dc termination
-is not supported.
-.Pp
-.It Ic -exit Op Ar status
-This primary causes
-.Nm
-to stop traversing the file system and exit immediately,
-with the specified numeric exit status.
-If the
-.Ar status
-value is not specified, then
-.Nm
-will exit with status zero.
-Note that any preceding primaries will be evaluated and acted upon
-before exiting.
-.Pp
-.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).
-.Pp
-.It Ic -flags Oo Fl Oc Ns Ar flags
-If
-.Ar flags
-are preceded by a dash
-.Pq Dq Ic \- ,
-this primary evaluates to true
-if at least all of the bits in
-.Ar flags
-are set in the file's flags bits.
+.BR /usr/5bin/posix2001/find ,
+but not with
+.BR /usr/5bin/find .
+.TP
+.BR \-perm " mode"
+True if the file permission flags
+exactly
+match the
+octal number
+or symbolic
+.I mode
+(see
+.IR chmod (1)).
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
+.I mode
+is prefixed by a minus sign,
+the flags are compared:
+.IR (flags&mode)==mode .
+.TP
+.BR \-type " c"
+True if the type of the file
is
-.Dq none ,
-files with no flags bits set are matched.
-(See
-.Xr chflags 1
-for more information about file flags.)
-.Pp
-.It Ic -follow
-Follow symbolic links.
-.Pp
-.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.
-.Pp
-.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 file systems
-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.
-.Pp
-.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 (and considered a numeric argument).
-.Pp
-.It Ic -iname Ar pattern
-True if the last component of the pathname being examined matches
-.Ar pattern
-in a case-insensitive manner.
-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 .
-.Pp
-.It Ic -inum Ar n
-True if the file has inode number
-.Ar n .
-.Pp
-.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.
-.Pp
-.It Ic -links Ar n
+.I c,
+where
+.I c
+is
+.sp
+.TS
+lfB l.
+b block special file;
+c character special file;
+d directory;
+D Solaris door;
+f plain file;
+l symbolic link;
+n HP-UX network special file;
+p named pipe;
+s socket.
+.TE
+.TP
+.B \-follow
+Always true;
+causes find to follow symbolic links.
+The `\fB\-type\fR l' condition never occurs in this case.
+.TP
+.BR \-links " n"
True if the file has
-.Ar n
+.I n
links.
-.Pp
-.It Ic -rm
-This primary is an alias for
-.Ic -delete .
-.Pp
-.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 -> .
-The format is identical to that produced by
-.Dq ls -dgils .
-.Pp
-.It Ic -maxdepth Ar depth
-True if the current search depth is less than or equal to what is specified in
-.Ar depth .
-.Pp
-.It Ic -mindepth Ar depth
-True if the current search depth is at least what is specified in
-.Ar depth .
-.Pp
-.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.
-.Pp
-.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.
-.Pp
-.It Ic -ok Ar utility Oo argument ... Oc Ic \&;
+.TP
+.BR \-user " uname"
+True if the file belongs to the user
+.I uname
+(login name or numeric user ID).
+.TP
+.BR \-group " gname"
+True if the file belongs to group
+.I gname
+(group name or numeric group ID).
+.TP
+.BR \-size " n[" c ]
+True if the file is
+.I n
+blocks long (512 bytes per block),
+or, with
+.BR c ,
+.I n
+bytes long.
+.TP
+.BR \-inum " n"
+True if the file has inode number
+.I n.
+.TP
+.BR \-atime " n"
+True if the file has been accessed in
+.I n
+days.
+.TP
+.BR \-mtime " n"
+True if the file has been modified in
+.I n
+days.
+.TP
+.BR \-ctime " n"
+True if the file inode has been changed in
+.I n
+days.
+.TP
+.BR \-exec " command ... " ;
+True if the executed command returns
+a zero value as exit status.
+The end of the command must be punctuated by an (escaped)
+semicolon.
+A command argument `{}' is replaced by the
+current pathname.
+.TP
+.BR \-exec " command ... " "{} +"
+Always true.
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
-.Ar 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
-.Ic -ok
-primary evaluates to false.
-Set aggregation
-.Pq Do \&+ Dc termination
-is not supported.
-.Pp
-.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 \&* ,
+.B {}
+argument is replaced by a set of aggregated pathnames.
+Each pathname is passed to the command as a single argument.
+Every time a limit of arguments is reached
+by the pathnames found so far,
+the command is executed,
+and aggregating starts using a new set
+beginning with the next pathname.
+If any invocation of command
+returns a non-zero exit status,
+find will return a non-zero exit status
+when its processing is done.
+.TP
+.BR \-ok " command ... " ;
+Like
+.B \-exec
+except that the generated command is written on
+the standard output, then the standard input is read
+and the command executed only upon response
+.BR y .
+.TP
+.B \-print
+Always true;
+causes the current pathname to be printed.
+If no expression is given,
+.B \-print
+is used per default
+(as a change introduced by POSIX.2).
+.TP
+.BR \-newer " file"
+True if
+the current file has been modified more recently than the argument
+.I file.
+.TP
+.BR \-anewer " file"
+True if
+the current file has been accessed more recently than the argument
+.I file
+was modified.
+This primary is an extension.
+.TP
+.BR \-cnewer " file"
+True if a status change
+has occurred on the current file
+more recently than the argument
+.I file
+was modified.
+This primary is an extension.
+.TP
+.B \-depth
+Always true;
+causes the contents of each directory
+to be examined before the directory itselves.
+.TP
+.BR \-fstype " type"
+True if the current file
+resides on a file system of the given type.
+.TP
+.B \-local
+True if the file is on a local file system.
+Are file system types except for
+.I nfs
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 .
-.Pp
-.It Ic -newer Ar file
-True if the current file has a more recent last modification time than
-.Ar file .
-.Pp
-.It Ic -newerXY Ar reference
-For compatibility with Gnu findutils.
-.Bl -column -offset indent ".Sy findutils" ".Sy equivalent"
-.It Sy findutils Ta Sy find
-.It Sy option Ta Sy equivalent
-.It -neweraa Ta -anewer
-.It -newerat Ta -asince
-.It -newercc Ta -cnewer
-.It -newerct Ta -csince
-.It -newermm Ta -newer
-.It -newermt Ta -since
-.El
-.Pp
-Other option variants from findutils are not implemented.
-.Pp
-.It Ic -nouser
-True if the file belongs to an unknown user.
-.Pp
-.It Ic -nogroup
-True if the file belongs to an unknown group.
-.Pp
-.It Ic -path Ar pattern
-True if the pathname being examined matches
-.Ar pattern .
-Special shell pattern matching characters
-.Po
-.Dq \&[ ,
-.Dq \&] ,
-.Dq \&* ,
+.I smbfs
+are currently considered local.
+.TP
+.B \-mount
+Always true;
+restricts the search to directories
+that have the same device id
+as the currently examined path operand.
+.TP
+.B \-xdev
+The same as
+.BR \-mount .
+This primary has been introduced by POSIX.
+.TP
+.B \-nouser
+True if the file is owned by a user
+that has no login name.
+.TP
+.B \-nogroup
+True if the file is owned by a group
+that lacks a group name.
+.TP
+.B \-prune
+Always true.
+Causes the search for the current path
+to be stopped once the primary is evaluated.
+When combined with
+.BR \-depth ,
+.B \-prune
+has no effect.
+.TP
+.BR \-cpio " device"
+Always true.
+Writes the file on the named device
+in binary cpio format (5120-byte records).
+Implies
+.BR \-depth .
+.TP
+.BR \-ncpio " device"
+Always true.
+Writes the file on the named device
+in SVR4 ASCII cpio format (5120-byte records).
+Implies
+.BR \-depth .
+.PP
+The primaries may be combined using the following operators
+(in order of decreasing precedence):
+.TP 4
+1)
+A parenthesized group of primaries and operators
+(parentheses are special to the Shell and must be escaped).
+.TP 4
+2)
+The negation of a primary
+(`!' is the unary
+.I not
+operator).
+.TP 4
+3)
+Concatenation of primaries
+(the
+.I and
+operation
+is implied by the juxtaposition of two primaries
+or by an explicit
+.B \-a
+operator).
+.TP 4
+4)
+Alternation of primaries
+.RB "(`" \-o "' is the"
+.I or
+operator).
+.PP
+Options have been introduced by POSIX.1-2001
+in addition to the expression operators.
+They must preceed the
+.I pathname-list
+one the command line
+and have no effect on boolean expression processing.
+.TP
+.B \-H
+Follow symbolic links given on the command line,
+but do not follow symbolic links encountered during directory traversal.
+.TP
+.B \-L
+Follow all symbolic links found,
+like the
+.I \-follow
+primary.
+.PP
+With the
+.I \-follow
+primary or the
+.I \-L
+option, hierarchy loops caused by symbolic links are detected,
+but only
+.B /usr/5bin/posix2001/find
+prints an error message.
+The offending link is not followed,
+and operation continues with the next directory entry found.
+.SH EXAMPLES
+To remove all files named
+`a.out' or `*.o' that have not been accessed for a week:
+.IP "" .2i
+find / \\( \-name a.out \-o \-name \'*.o\' \\)
+\-atime +7 \-exec rm {} \\;
+.PP
+The rm command is executed once for each file.
+The form
+.IP "" .2i
+find / \\( \-name a.out \-o \-name \'*.o\' \\)
+\-atime +7 \-exec rm {} +
+.PP
+is faster since the rm command is executed with a set of pathnames.
+.PP
+To find all files below the directory `documents'
+that contain the regular expression `string':
+.IP "" .2i
+find documents \-type f \-exec grep string {} +
+.PP
+To find all files in the directory `home',
+not descending into its subdirectories:
+.IP "" .2i
+find home ! \-name home \-prune
+.PP
+To check whether the file `diary'
+has been updated within the last two days;
+the name of the file is printed if true,
+and is not printed otherwise:
+.IP "" .2i
+find diary \-prune \-mtime \-2
+.SH FILES
+/etc/passwd
+.br
+/etc/group
+.SH "ENVIRONMENT VARIABLES"
+.TP
+.BR LANG ", " LC_ALL
+See
+.IR locale (7).
+.TP
+.B LC_COLLATE
+Affects the collation order for range expressions,
+equivalence classes, and collation symbols in patterns with
+.BR /usr/5bin/s42/find ,
+.BR /usr/5bin/posix/find ,
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.
-.Pp
-.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 Ic \- ,
-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 Ic \- .
-.Pp
-.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 -delete ,
-.Ic -exec ,
-.Ic -execdir ,
-.Ic -exit ,
-.Ic -fprint ,
-.Ic -ls ,
-.Ic -ok ,
-.Ic -print0 ,
-.Ic -printx ,
-nor
-.Ic -rm
-is specified, the given expression shall be effectively replaced by
-.Cm \&( Ns Ar given\& expression Ns Cm \&)
-.Ic -print .
-.Pp
-.It Ic -print0
-This primary always evaluates to true.
-It prints the pathname of the current file to standard output, followed
-by a NUL character.
-.Pp
-.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
-can safely be used as input to
-.Xr xargs 1 .
-.Pp
-.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.
-.Pp
-.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.
-.Pp
-.It Ic -since Ar timestamp
-True if the file last modification time is more recent than
-.Ar timestamp .
-.Pp
-.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 Ic c ,
-then the primary is true if the file's size is
-.Ar n
-bytes.
-.Pp
-.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 username
-True if the file belongs to the user
-.Ar username .
-If
-.Ar username
-is numeric and there is no such user on the system, then
-.Ar username
-is treated as a user id (and considered a numeric argument).
-.Pp
-.It Ic -xdev
-This primary always evaluates to true.
-It causes find not to descend past directories that have a different
-device ID
-.Va ( st_dev ,
-see
-.Xr stat 2
-S5.6.2 [POSIX.1]).
-.El
-.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.
-.It Cm \&! Ar expression
-This is the unary
-.Tn NOT
-operator.
-It evaluates to true if the expression is false.
-.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.
-.It Ar expression Cm -or Ar expression
+.BR /usr/5bin/posix2001/find .
+.TP
+.B LC_CTYPE
+Determines the mapping of bytes to characters
+and character class expressions
+in patterns.
+.TP
+.B SYSV3
+Causes the text of some diagnostic messages to be changed;
+causes
+.I \-ncpio
+to create traditional ASCII cpio format archives.
+.SH "SEE ALSO"
+chmod(1),
+cpio(1),
+pax(1),
+sh(1),
+xargs(1),
+stat(2),
+glob(7),
+locale(7)
+.SH NOTES
+Undesired effects can result if file names printed by
+.I find
+contain newline characters,
+as shown by the following command sequence:
+.RS
+.sp
+.nf
+$ mkdir \-p \'dummy
+> /etc\'
+$ touch \'dummy
+> /etc/passwd\'
+$ find . \-print
+\&.
+\&./dummy
+.sp
+\&./dummy
+/etc
+\&./dummy
+/etc/passwd
+$\
+.fi
+.sp
+.RE
+Shell scripts or utilities unaware of this problem
+will operate on
+.I /etc/passwd
+(or other arbitrary file names)
+when reading such output;
+a malicious user might create such files
+to read or overwrite privileged information.
+To circumvent this problem,
+one of the following proposals should be taken
+unless the file hierarchy traversed by the
+.I find
+command is definitively known not to contain such file names:
+.IP \(en 2
+If the output is read by the
+.I xargs
+utility to gain faster execution by aggregating command arguments as in
+.in +2
+.sp
+find . \-print | xargs \fIcommand\fR
+.sp
+.in -2
+a safe and equally fast substitute is the
+.in +2
+.sp
+find . \-exec \fIcommand\fR {} +
+.sp
+.in -2
+operand of
+.IR find ;
+it is not portably accepted by
+.I find
+implementations, though.
+.IP \(en 2
+A universal solution for submitting file names to the
+.I xargs
+utility is given in the
+.I NOTES
+section of
+.IR xargs (1).
+.IP \(en 2
+The method employed by this script can be generalized as follows:
+If the script or utility reading the output of
+.I find
+provides the necessary parsing capabilities,
+special path prefixes can be given to the
+.I find
+command, such as
+.in +2
+.sp
+find /.//. \-print
+.sp
+.in -2
+for absolute path names or
+.in +2
+.sp
+find .//. \-print
+.sp
+.in -2
+for relative path names.
+Since adjacent slash characters never appear
+in relative file names found during directory traversal,
+they can be taken as delimiters;
+a line starts a new path name
+only if the delimiter appears.
+.IP \(en 2
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
+.I \-name
+operand can be used to exclude all path names
+that contain newline characters, as in
+.in +2
+.sp
+.nf
+$ find . \-name \'*
+> *\' \-prune \-o ! \-name \'*
+> *\' \-print
+.sp
+.fi
+.in -2
+Note that certain other implementations of
+.I find
+require a leading period in the pattern
+to match file names with a leading period;
+it may be necessary to exclude such patterns as well.
+.IP \(en 2
The
-.Nm
-utility normally exits 0 on success, and exits with 1 under certain
-internal error conditions.
-If any invocations of
-.Dq Ic -exec Ar ... Ic \&+
-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 . \-type f \-mmin \-30 \-print \-or \-mindepth 1 \-prune"
-Print out a list of all the files in the current directory that are
-newer than 30 minutes.
-.It Li "find . \-type f \-atime +10 \-mindepth 2 \-print"
-Print out a list of all the files in any sub-directories that have not
-been accessed in the past ten days.
-.It Li "find . \-mtime +90 \-exec rm \-i {} + \-or \-mindepth 1 \-prune"
-Interactively remove all of the files in the current directory that have
-not been modified in 90 days.
-.It Li "find . \-type f \-mtime +90 \-ok mv {} {}.old \e;"
-Interactively rename all of the files in the current directory and all
-sub-directories that have not been modified in 90 days.
-.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.
-.It Li "find . \-type f \-exec sh \-c 'file=\*[q]$1\*[q]; ...;' - {} \;"
-Perform an arbitrarily complex shell command for every file.
-.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 re_format 7 ,
-.Xr symlink 7 ,
-.Xr sysctl 8
-.Sh STANDARDS
+.I \-depth
+operand cannot be combined with the
+.I \-prune
+operand used in the previous example.
+When the directory name must be printed
+after file names below that directory,
+as with the
+.IR cpio
+command,
+file names that leave the specified path hierarchy
+should be filtered out:
+.in +2
+.sp
+find . \-depth | egrep \'^\e./\' | cpio \-oc \-O /dev/rmt/c0s0
+.sp
+.in -2
+(note the escaped regular expression meta-character).
+.IP \(en 2
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 -asince ,
-.Ic -cmin ,
-.Ic -cnewer ,
-.Ic -csince ,
-.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 ,
-.Ic -rm ,
-and
-.Ic -since
-primaries are extensions to
-.St -p1003.2 .
-.Pp
-Historically, the
-.Fl d ,
-.Fl h ,
+.I \-cpio
and
-.Fl x
-options were implemented using the primaries
-.Dq Ic -depth ,
-.Dq Ic -follow ,
-and
-.Dq Ic -xdev .
-These primaries always evaluated to true, and always
-took effect when the
-.Ar expression
-was parsed, before the file system traversal began.
-As a result, some legal expressions could be confusing.
-For example, in the expression
-.Dq Ic -print Ic -or Ic -depth ,
-.Ic -print
-always evaluates to true, so the standard meaning of
-.Ic -or
-implies that
-.Ic -depth
-would never be evaluated, but that is not what happens;
-in fact,
-.Ic -depth
-takes effect immediately, without testing whether
-.Ic -print
-returns true or false.
-.Pp
-Historically, the operator
-.Dq Ic -or
-was implemented as
-.Dq Ic -o ,
-and the operator
-.Dq Ic -and
-was implemented as
-.Dq Ic -a .
-.Pp
-Historic implementations of the
-.Dq Ic -exec
-and
-.Dq Ic -ok
-primaries did not replace the string
-.Dq Ic {}
-in the utility name or the
-utility arguments if it did not appear as a separate argument.
-This version replaces it no matter where in the utility name or arguments
-it appears.
-.Pp
-Support for
-.Dq Ic -exec Ar ... Ic \&+
-is consistent with
-.Em IEEE PASC Interpretation 1003.2 #210 ,
-though the feature originated in
-.Tn SVR4 .
-.Pp
+.I \-ncpio
+operands will automatically exclude file names
+that contain newline characters
+with this
+.I find
+implementation.
+.PP
The
-.Ic -delete
-primary does not interact well with other options that cause the file system
-tree traversal options to be changed.
-.Sh HISTORY
-A much simpler
-.Nm
-command appeared in First Edition AT&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.
+.I \-print0
+operand supported by some other implementations
+is considered a very limited work-around
+since it does not allow the output to be processed
+by utilities unaware of NUL characters;
+it has therefore not been included here.