find(1)
find --
find files
Synopsis
find [path-list] [predicate-list]
Description
find
recursively descends the directory hierarchy for
each pathname in the
path-list
(that is, one or more pathnames)
seeking files that match a predicate-list,
a boolean expression
written in the primaries given below.
The default path-list is ``.'' (the current directory).
find processes supplementary code set characters,
and recognizes supplementary code set characters
in path-list and as described below,
according to the locale specified in the LC_CTYPE
environment variable (see LANG on
environ(5)).
find performs pattern searches
on characters, not bytes.
In the descriptions, the argument
n
is used as a decimal integer
where
+n
means more than
n,
-n
means less than
n
and
n
means exactly
n.
Valid expressions in the predicate-list are:
-exit-
Always true; causes find to exit immediately
with the current exit value. This can be used to preempt
the default -print expression.
-name pattern-
True if
pattern
matches the current filename.
Normal shell
filename 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.
pattern may contain supplementary code set characters.
Note: a slash (/) can be used in pattern, but it will not match
any particular filename.
-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.
-perm [-]mode-
The mode argument is used to represent file mode bits. Its format is identical
to the chmod symbolic_mode operand and is interpreted in the following manner.
A template is assumed, with all file mode bits cleared. An op symbol of + sets the
appropriate mode bits in the template; - clears the appropriate bits; and
= sets the appropriate mode bits, without regard to the contents of
the process's file mode creation mask. The op symbol of - can't be the first character of mode.
If the hyphen is omitted, the primary evaluates as true when
the file permission bits match
the value of the resulting template exactly. Otherwise, if mode has a hyphen
prefix, the primary evaluates as true if at least all the bits in the
resulting template are set in the file permission bits.
-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.
-atime n-
True if the file access time subtracted from the initialization time is
n-1 to n multiples of 24 hours. The initialization time is
the time between the invocation of the find utility and the first
access by that invocation to any file file specified by its path operands.
-mtime n-
True if the file modification time subtracted from the initialization
time is n-1 to n multiples of 24 hours. The initialization time is
the time between the invocation of the find utility and the first
access by that invocation to any file file specified by its path operands.
-ctime n-
True if the time of last change of file status information subtracted
from the initialization time is n-1 to n multiples of 24 hours.
The initialization time is
the time between the invocation of the find utility and the first
access by that invocation to any file file specified by its path operands.
-exec cmd-
True if the executed
cmd
returns
a zero value as exit status.
A command argument
{}
is replaced by the
current pathname.
The end of
cmd
must be punctuated by an escaped
semicolon or a plus sign (+).
When a plus sign is used, cmd
aggregates a set of pathnames and executes
on the set;
when a semicolon is used, cmd executes on one
pathname at a time.
The reason for preferring + to a semicolon is vastly improved performance.
cmd may contain supplementary code set characters.
You can prepend the cmd with tfadmin if you need
to pass privileges to the cmd. This assumes that an entry for you in
the tfadmin database has been previously defined.
The super-user will
execute the cmd with all privileges; prepending the
tfadmin is not necessary in this case.
-ok cmd-
Like
-exec
except that the generated command line is printed
with a question mark first.
This is a prompt for confirmation.
It is executed if the response is affirmative. The form of the affirmative response
is locale dependent: ``y'' in the C locale. (See LANG on
environ(5).))
cmd may contain supplementary code set characters.
-print-
Always true;
causes the current pathname to be printed.
-newer file-
True if
the current file has been modified more recently than the argument
file.
-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 contained in directories without
write permission.
-mount-
Always true;
restricts the search to the file system containing the directory specified.
-local-
True if the file physically resides on the local system.
This does not restrict the search to only files which physically
reside on the local system, it merely matches such files.
See ``Examples''.
-xdev [argument list]-
True if you restrict your search to the root file system. If you do not
specify argument list, the search will be made for every file
on local and remote networks.
( expression )-
True if the parenthesized expression is true.
-type type-
True if the file type corresponds to the specified type:
b-
block special file
c-
character special file
d-
directory
f-
regular file
l-
symbolic link
p-
fifo (named pipe)
s-
socket file
-follow-
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 symbolic link pointed
to an ancestor.
This expression should not be used with the -type l expression.
-links n-
True if the file has
n
links.
-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.
-nouser-
True if the file belongs to a user not in the
/etc/passwd
file.
-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.
-nogroup-
True if the file belongs to a group not in the
/etc/group
file.
-fstype type-
True if the file system to which the file belongs is of type
type.
-inum n-
True if the file has inode number
n.
-prune-
Always yields true.
Do not examine any directories or files
in the directory structure below the expression
just matched.
See ``Examples''.
The primaries may be combined using the following operators
(in order of decreasing precedence):
1.-
The negation of a primary
(``!''
is the unary
not
operator).
2.-
Concatenation of primaries
(the
and
operation
is implied by the juxtaposition of two primaries).
3.-
Alternation of primaries
(-o is the
or
operator).
Note that 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 predicate-list is present,
-print is used as the expression.
Otherwise, if the given expression does not contain any of the primaries
-exec, -ok, or -print,
the given expression can be replaced by
(given_expression) -print.
The -user, -group, and -newer primaries each evaluate
their respective arguments once.
Files
/etc/passwd-
/etc/group-
/usr/lib/locale/locale/LC_MESSAGES/uxcore.abi-
language-specific message file (See LANG on
environ(5).)
Examples
Remove all files in your home directory
named a.out or .o that
have not been accessed for a week:
find $HOME \( -name a.out -o -name '.o' \) -atime +7 -exec rm {} \;
Recursively print all filenames in the current directory and below,
but skipping
SCCS
directories:
find . -name SCCS -prune -o -print
Recursively print all filenames in the current directory and below,
skipping the contents of
SCCS
directories, but printing out the
SCCS
directory name:
find . -print -name SCCS -prune
Match only local files, and don't examine the contents of any directory found to be
remotely mounted:
find / ! -local -prune -o -size +50 -print
This only works correctly if there are no local file systems mounted on top of
remote directories. This example will print all local files on the system
larger than 50 blocks, without wasting time accessing remote files.
To get the same effect, but to check for files in local file systems mounted on remote
directories, use:
find / -local -size +50 -print
Exit codes
If find encounters any errors in accessing
operands, it returns non-zero.
References
chmod(1),
sh(1),
stat(2),
test(1),
umask(2)
Notices
When using find
to determine files modified within a range of time,
you must use the
?time
arguments before the
-print
argument, or find will return all files.
The following option is obsolete and will not be supported in
future releases.
-cpio device-
Always true;
write the current file on
device
in
cpio(1)
format (5120-byte records).
This command has been updated to handle files greater than 2GB.
© 2004 The SCO Group, Inc. All rights reserved.
UnixWare 7 Release 7.1.4 - 25 April 2004