solaris - find (1)
NAME
find - find files
SYNOPSIS
find path...expression
AVAILABILITY
SUNWcsu
DESCRIPTION
The find command recursively descends the directory hierar-
chy for each path seeking files that match a Boolean expres-
sion written in the primaries given below.
find will be able to descend to arbitrary depths in a file
hierarchy and will not fail due to path length limitations
(unless a path operand specified by the application exceeds
PATH_MAX requirements).
OPERANDS
The following operands are supported:
path a path name of a starting point in the direc-
tory hierarchy.
The first argument that starts with a -, or is a ! or a (,
and all subsequent arguments will be interpreted as an
expression made up of the following primaries and operators.
In the descriptions, wherever n is used as a primary argu-
ment, it will be interpreted as a decimal integer optionally
preceded by a plus (+) or minus (-) sign, as follows:
+n more than n
n exactly n
-n less than n.
Expressions
Valid expressions are:
-atime n True if the file was accessed n days ago.
The access time of directories in path is
changed by find itself.
-cpio device Always true; write the current file on dev-
ice in cpio format (5120-byte records).
-ctime n True if the file's status was changed n days
ago.
-depth Always true; causes descent of the directory
hierarchy to be done so that all entries in a
directory are acted on before the directory
itself. This can be useful when find is used
with cpio(1) to transfer files that are con-
tained in directories without write permis-
sion.
-exec command True if the executed command returns a zero
value as exit status. The end of command
must be punctuated by an escaped semicolon.
A command argument {} is replaced by the
current path name.
-follow Always true; causes symbolic links to be
followed. When following symbolic links,
find keeps track of the directories visited
so that it can detect infinite loops; for
example, such a loop would occur if a sym-
bolic link pointed to an ancestor. This
expression should not be used with the - type
l expression.
-fstype type True if the filesystem to which the file
belongs is of type type.
-group gname True if the file belongs to the group gname.
If gname is numeric and does not appear in
the /etc/group file, it is taken as a group
ID.
-inum n True if the file has inode number n.
-links n True if the file has n links.
-local True if the file system type is not a remote
file system type as defined in the
/etc/dfs/fstypes file. nfs is used as the
default remote filesystem type if the
/etc/dfs/fstypes file is not present.
-ls Always true; prints current path name
together with its associated statistics.
These include (respectively):
o inode number
o size in kilobytes (1024 bytes)
o protection mode
o number of hard links
o user
o group
o size in bytes
o modification time.
If the file is a special file the size field
will instead contain the major and minor dev-
ice numbers.
If the file is a symbolic link the pathname
of the linked-to file is printed preceded by
`->'. The format is identical to that of ls
-gilds (see ls(1)).
Note: Formatting is done internally, without
executing the ls program.
-mount Always true; restricts the search to the
file system containing the directory speci-
fied. Does not list mount points to other
file systems.
-mtime n True if the file's data was modified n days
ago.
-name pattern True if pattern matches the current file
name. Normal shell file name generation
characters (see sh(1)) may be used. A
backslash (\) is used as an escape character
within the pattern. The pattern should be
escaped or quoted when find is invoked from
the shell.
-ncpio device Always true; write the current file on dev-
ice in cpio -c format (5120 byte records).
-newer file True if the current file has been modified
more recently than the argument file.
-nogroup True if the file belongs to a group not in
the /etc/group file.
-nouser True if the file belongs to a user not in
the /etc/passwd file.
-ok command Like -exec except that the generated command
line is printed with a question mark first,
and is executed only if the user responds by
typing y.
-perm [-]mode The mode argument is used to represent file
mode bits. It will be identical in format to
the <symbolicmode> operand described in
chmod(1), and will be interpreted as follows.
To start, a template will be assumed with all
file mode bits cleared. An op symbol of:
+ will set the appropriate mode bits in
the template;
- will clear the appropriate bits;
= will set the appropriate mode bits,
without regard to the contents of pro-
cess' file mode creation mask.
The op symbol of - cannot be the first char-
acter of mode; this avoids ambiguity with the
optional leading hyphen. Since the initial
mode is all bits off, there are not any sym-
bolic modes that need to use - as the first
character.
If the hyphen is omitted, the primary will
evaluate as true when the file permission
bits exactly match the value of the resulting
template.
Otherwise, if mode is prefixed by a hyphen,
the primary will evaluate as true if at least
all the bits in the resulting template are
set in the file permission bits.
-perm [-]onum True if the file permission flags exactly
match the octal number onum (see chmod(1)).
If onum is prefixed by a minus sign (-), only
the bits that are set in onum are compared
with the file permission flags, and the
expression evaluates true if they match.
-print Always true; causes the current path name to
be printed.
-prune Always yields true. Do not examine any
directories or files in the directory struc-
ture below the pattern just matched. See the
examples, below.
-size n[c] True if the file is n blocks long (512 bytes
per block). If n is followed by a c, the
size is in bytes.
-type c True if the type of the file is c, where c
is b, c, d, l, p, or f for block special
file, character special file, directory, sym-
bolic link, fifo (named pipe), or plain file,
respectively.
-user uname True if the file belongs to the user uname.
If uname is numeric and does not appear as a
login name in the /etc/passwd file, it is
taken as a user ID.
-xdev Same as the -mount primary.
Complex Expressions
The primaries may be combined using the following operators
(in order of decreasing precedence):
1) ( expression ) True if the parenthesized
expression is true
(parentheses are special to
the shell and must be
escaped).
2) ! expression The negation of a primary (!
is the unary not operator).
3) expression [-a] expression
Concatenation of primaries
(the and operation is implied
by the juxtaposition of two
primaries).
4) expression -o expression
Alternation of primaries ( - o
is the or operator).
Note: When you use find in conjunction with cpio, if you
use the - L option with cpio then you must use the -follow
expression with find and vice versa. Otherwise there will
be undesirable results.
If no expression is present, -print will be used as the
expression. Otherwise, if the given expression does not
contain any of the primaries -exec, -ok or -print, the given
expression will be effectively replaced by:
( given_expression ) -print
The -user, -group, and -newer primaries each will evaluate
their respective arguments only once.
EXAMPLES
The following commands are equivalent:
example% find .
example% find . -print
They both write out the entire directory hierarchy from the
current directory.
Remove all files in your home directory named a.out or * .o
that have not been accessed for a week:
example% find $HOME \( -name a.out -o -name '*.o' \
-atime +7 \ -exec rm {} \;
Recursively print all file names in the current directory
and below, but skipping SCCS directories:
example% find . -name SCCS -prune -o -print
Recursively print all file names in the current directory
and below, skipping the contents of SCCS directories, but
printing out the SCCS directory name:
example% find . -print -name SCCS -prune
The following command is roughly equivalent to the - nt
extension to test(1):
example$ if [ -n "$(find file1 -prune -newer file2)" ]; then
printf %s\\n "file1 is newer than file2"
fi
The descriptions of -atime, -ctime, and -mtime use the ter-
minology n ``24-hour periods''. For example, a file
accessed at 23:59 will be selected by:
example% find . -atime -1 -print
at 00:01 the next day (less than 24 hours later, not more
than one day ago); the midnight boundary between days has no
effect on the 24-hour calculation.
ENVIRONMENT
See environ(5) for descriptions of the following environment
variables that affect the execution of find: LC_COLLATE,
LC_CTYPE, LC_MESSAGES, and NLSPATH.
EXIT STATUS
The following exit values are returned:
0 All path operands were traversed successfully.
>0 An error occurred.
FILES
/etc/passwd password file
/etc/group group file
/etc/dfs/fstypes file that registers distributed file
system packages
SEE ALSO
chmod(1), ls(1), sh(1), test(1), stat(2), umask(2),
environ(5)
WARNINGS
The following options are obsolete and will not be supported
in future releases:
-cpio device Always true; write the current file on device
in cpio format (5120-byte records).
-ncpio device Always true; write the current file on device
in cpio -c format (5120 byte records).
NOTES
When using find to determine files modified within a range
of time, one must use the ?time argument before the -print
argument otherwise find will give all files.