Solaris 10 find 命令手册
NAME
find - find files
SYNOPSIS
/usr/bin/find [-H | -L] path... expression
/usr/xpg4/bin/find [-H | -L] path... expression
DESCRIPTION
The find utility recursively descends the directory hierar-
chy for each path seeking files that match a Boolean expres-
sion written in the primaries given below.
find is able to descend to arbitrary depths in a file
hierarchy and does not fail due to path length limitations
(unless a path operand specified by the application exceeds
PATH_MAX requirements).
OPTIONS
The following options are supported:
-H Causes the file information and file type
evaluated for each symbolic link encountered on
the command line to be those of the file refer-
enced by the link, and not the link itself. If
the referenced file does not exist, the file
information and type is for the link itself.
File information for all symbolic links not on
the command line is that of the link itself.
-L Causes the file information and file type
evaluated for each symbolic link to be those of
the file referenced by the link, and not the
link itself. See NOTES.
Specifying more than one of the mutually-exclusive options
-H and -L is not considered an error. The last option speci-
fied determines the behavior of the utility.
OPERANDS
The following operands are supported:
path A pathname of a starting point in the
directory hierarchy.
expression The first argument that starts with a -,
or is a ! or a (, and all subsequent
arguments are interpreted as an expres-
sion made up of the following primaries
and operators. In the descriptions,
wherever n is used as a primary argu-
ment, it is 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:
-acl True if the file have additional ACLs
defined.
-atimen 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. Writes the current file on
device 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 contained in
directories without write permission.
-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 pathname. If the
last argument to -exec is {} and you
specify + rather than the semicolon (;),
the command is invoked fewer times, with
{} replaced by groups of pathnames. If
any invocation of the command returns a
non-zero value as exit status, find
returns a non-zero exit status.
-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 symbolic link pointed to an
ancestor. This expression should not be
used with the find-type l expression.
See NOTES.
-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, or in the
NIS/NIS+ tables, 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. The -local option descends the
hierarchy of non-local directories. See
EXAMPLES for an example of how to search
for local files without descending.
-ls Always true. Prints current pathname
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 instead contains the major and
minor device 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(1B)).
Formatting is done internally, without
executing the ls program.
-mount Always true. Restricts the search to the
file system containing the directory
specified. 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)) can be used. A
backslash (\) is used as an escape char-
acter within the pattern. The pattern
should be escaped or quoted when find is
invoked from the shell.
Unless the character '.' is explicitly
specified in the beginning of pat-
tern, a current file name beginning with
'.' does not match pattern when using
/usr/bin/find. /usr/xpg4/bin/find does
not make this distinction; wildcard file
name generation characters can match
file names beginning with '.'.
-ncpio device Always true. Writes the current file on
device in cpio -c format (5120 byte
records).
-newer file True if the current file has been modi-
fied more recently than the argument
file.
-nogroup True if the file belongs to a group not
in the /etc/group file, or in the
NIS/NIS+ tables.
-nouser True if the file belongs to a user not
in the /etc/passwd file, or in the
NIS/NIS+ tables.
-ok command Like -exec, except that the generated
command line is printed with a question
mark first, and is executed only if the
response on standard input is affirma-
tive.
-perm [-]mode The mode argument is used to represent
file mode bits. It is identical in for-
mat to the symbolic mode operand,
symbolic_mode_list, described in
chmod(1), and is interpreted as follows.
To start, a template is assumed with all
file mode bits cleared. An op symbol of:
+ Set the appropriate mode
bits in the template
- Clear the appropriate bits
= Set the appropriate mode
bits, without regard to the
contents of the file mode
creation mask of the pro-
cess
The op symbol of - cannot be the first
character of mode, to avoid ambiguity
with the optional leading hyphen. Since
the initial mode is all bits off, there
are no symbolic modes that need to use -
as the first character.
If the hyphen is omitted, the primary
evaluates as true when the file permis-
sion bits exactly match the value of the
resulting template.
Otherwise, if mode is prefixed by a
hyphen, the primary evaluates 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 pathname
to be printed.
-prune Always yields true. Does not examine any
directories or files in the directory
structure below the pattern just
matched. (See EXAMPLES). If -depth is
specified, -prune has no effect.
-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, D, f, l, p, or s for block
special file, character special file,
directory, door, plain file, symbolic
link, fifo (named pipe), or socket,
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, or in the NIS/NIS+
tables, it is taken as a user ID.
-xdev Same as the -mount primary.
-xattr True if the file has extended attri-
butes.
Complex Expressions
The primaries can 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 pri-
mary (! is the unary not
operator).
3) expression [-a] expression Concatenation of pri-
maries (the and opera-
tion is implied by the
juxtaposition of two
primaries).
4) expression -o expression Alternation of primaries
(-o is the or operator).
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 are undesirable
results.
If no expression is present, -print is used as the expres-
sion. Otherwise, if the given expression does not contain
any of the primaries -exec, -ls, -ok, or -print, the given
expression is effectively replaced by:
( given_expression ) -print
The -user, -group, and -newer primaries each evaluate their
respective arguments only once. Invocation of command speci-
fied by -exec or -ok does not affect subsequent primaries on
the same file.
USAGE
See largefile(5) for the description of the behavior of find
when encountering files greater than or equal to 2 Gbyte (
2^31 bytes).
EXAMPLES
Example 1 Writing Out the Hierarchy Directory
The following commands are equivalent:
example% find .
example% find . -print
They both write out the entire directory hierarchy from the
current directory.
Example 2 Removing Files
The following comand removes all files in your home direc-
tory 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 {} \;
Example 3 Printing All File Names But Skipping SCCS Direc-
tories
The following command recursively print all file names in
the current directory and below, but skipping SCCS direc-
tories:
example% find . -name SCCS -prune -o -print
Example 4 Printing all file names and the SCCS directory
name
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
Example 5 Testing for the Newer File
The following command is basically 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"
Example 6 Selecting a File Using 24-hour Mode
The descriptions of -atime, -ctime, and -mtime use the ter-
minology n ``24-hour periods''. For example, a file accessed
at 23:59 is 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.
Example 7 Printing Files Matching a User's Permission Mode
The following command recursively print all file names whose
permission mode exactly matches read, write, and execute
access for user, and read and execute access for group and
other:
example% find . -perm u=rwx,g=rx,o=rx
The above could alternatively be specified as follows:
example% find . -perm a=rwx,g-w,o-w
Example 8 Printing Files with Write Access for other
The following command recursively print all file names whose
permission includes, but is not limited to, write access for
other:
example% find . -perm -o+w
Example 9 Printing Local Files without Descending Non-local
Directories
example% find . ! -local -prune -o -print
Example 10 Printing the Files in the Name Space Possessing
Extended Attributes
example% find . -xattr
ENVIRONMENT VARIABLES
See environ(5) for descriptions of the following environment
variables that affect the execution of find: LANG, LC_ALL,
LC_COLLATE, LC_CTYPE, LC_MESSAGES, and NLSPATH.
PATH Determine the location of the
utility_name for the -exec and -ok pri-
maries.
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
ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Availability | SUNWcsu |
|_____________________________|_____________________________|
| CSI | Enabled |
|_____________________________|_____________________________|
| Interface Stability | Standard |
|_____________________________|_____________________________|
SEE ALSO
chmod(1), cpio(1), ls(1B), sh(1), test(1), acl(2), stat(2),
umask(2), attributes(5), environ(5), fsattr(5), large-
file(5), standards(5)
WARNINGS
The following options are obsolete and will not be supported
in future releases:
-cpio device Always true. Writes the current file on
device in cpio format (5120-byte
records).
-ncpio device Always true. Writes 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, use the -mtime argument before the -print argument.
Otherwise, find gives all files.
Some files that might be under the Solaris root file system
are actually mount points for virtual file systems, such as
mntfs or namefs. When comparing against a ufs file system,
such files are not selected if -mount or -xdev is specified
in the find expression.
Using the -L or -follow option is not recommended when des-
cending a file-system hierarchy that is under the control of
other users. In particular, when using -exec, symbolic links
can lead the find command out of the hierarchy in which it
started. Using -type is not sufficient to restrict the type
of files on which the -exec command operates, because there
is an inherent race condition between the type-check per-
formed by the find command and the time the executed command
operates on the file argument.
find - find files
SYNOPSIS
/usr/bin/find [-H | -L] path... expression
/usr/xpg4/bin/find [-H | -L] path... expression
DESCRIPTION
The find utility recursively descends the directory hierar-
chy for each path seeking files that match a Boolean expres-
sion written in the primaries given below.
find is able to descend to arbitrary depths in a file
hierarchy and does not fail due to path length limitations
(unless a path operand specified by the application exceeds
PATH_MAX requirements).
OPTIONS
The following options are supported:
-H Causes the file information and file type
evaluated for each symbolic link encountered on
the command line to be those of the file refer-
enced by the link, and not the link itself. If
the referenced file does not exist, the file
information and type is for the link itself.
File information for all symbolic links not on
the command line is that of the link itself.
-L Causes the file information and file type
evaluated for each symbolic link to be those of
the file referenced by the link, and not the
link itself. See NOTES.
Specifying more than one of the mutually-exclusive options
-H and -L is not considered an error. The last option speci-
fied determines the behavior of the utility.
OPERANDS
The following operands are supported:
path A pathname of a starting point in the
directory hierarchy.
expression The first argument that starts with a -,
or is a ! or a (, and all subsequent
arguments are interpreted as an expres-
sion made up of the following primaries
and operators. In the descriptions,
wherever n is used as a primary argu-
ment, it is 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:
-acl True if the file have additional ACLs
defined.
-atimen 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. Writes the current file on
device 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 contained in
directories without write permission.
-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 pathname. If the
last argument to -exec is {} and you
specify + rather than the semicolon (;),
the command is invoked fewer times, with
{} replaced by groups of pathnames. If
any invocation of the command returns a
non-zero value as exit status, find
returns a non-zero exit status.
-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 symbolic link pointed to an
ancestor. This expression should not be
used with the find-type l expression.
See NOTES.
-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, or in the
NIS/NIS+ tables, 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. The -local option descends the
hierarchy of non-local directories. See
EXAMPLES for an example of how to search
for local files without descending.
-ls Always true. Prints current pathname
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 instead contains the major and
minor device 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(1B)).
Formatting is done internally, without
executing the ls program.
-mount Always true. Restricts the search to the
file system containing the directory
specified. 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)) can be used. A
backslash (\) is used as an escape char-
acter within the pattern. The pattern
should be escaped or quoted when find is
invoked from the shell.
Unless the character '.' is explicitly
specified in the beginning of pat-
tern, a current file name beginning with
'.' does not match pattern when using
/usr/bin/find. /usr/xpg4/bin/find does
not make this distinction; wildcard file
name generation characters can match
file names beginning with '.'.
-ncpio device Always true. Writes the current file on
device in cpio -c format (5120 byte
records).
-newer file True if the current file has been modi-
fied more recently than the argument
file.
-nogroup True if the file belongs to a group not
in the /etc/group file, or in the
NIS/NIS+ tables.
-nouser True if the file belongs to a user not
in the /etc/passwd file, or in the
NIS/NIS+ tables.
-ok command Like -exec, except that the generated
command line is printed with a question
mark first, and is executed only if the
response on standard input is affirma-
tive.
-perm [-]mode The mode argument is used to represent
file mode bits. It is identical in for-
mat to the symbolic mode operand,
symbolic_mode_list, described in
chmod(1), and is interpreted as follows.
To start, a template is assumed with all
file mode bits cleared. An op symbol of:
+ Set the appropriate mode
bits in the template
- Clear the appropriate bits
= Set the appropriate mode
bits, without regard to the
contents of the file mode
creation mask of the pro-
cess
The op symbol of - cannot be the first
character of mode, to avoid ambiguity
with the optional leading hyphen. Since
the initial mode is all bits off, there
are no symbolic modes that need to use -
as the first character.
If the hyphen is omitted, the primary
evaluates as true when the file permis-
sion bits exactly match the value of the
resulting template.
Otherwise, if mode is prefixed by a
hyphen, the primary evaluates 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 pathname
to be printed.
-prune Always yields true. Does not examine any
directories or files in the directory
structure below the pattern just
matched. (See EXAMPLES). If -depth is
specified, -prune has no effect.
-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, D, f, l, p, or s for block
special file, character special file,
directory, door, plain file, symbolic
link, fifo (named pipe), or socket,
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, or in the NIS/NIS+
tables, it is taken as a user ID.
-xdev Same as the -mount primary.
-xattr True if the file has extended attri-
butes.
Complex Expressions
The primaries can 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 pri-
mary (! is the unary not
operator).
3) expression [-a] expression Concatenation of pri-
maries (the and opera-
tion is implied by the
juxtaposition of two
primaries).
4) expression -o expression Alternation of primaries
(-o is the or operator).
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 are undesirable
results.
If no expression is present, -print is used as the expres-
sion. Otherwise, if the given expression does not contain
any of the primaries -exec, -ls, -ok, or -print, the given
expression is effectively replaced by:
( given_expression ) -print
The -user, -group, and -newer primaries each evaluate their
respective arguments only once. Invocation of command speci-
fied by -exec or -ok does not affect subsequent primaries on
the same file.
USAGE
See largefile(5) for the description of the behavior of find
when encountering files greater than or equal to 2 Gbyte (
2^31 bytes).
EXAMPLES
Example 1 Writing Out the Hierarchy Directory
The following commands are equivalent:
example% find .
example% find . -print
They both write out the entire directory hierarchy from the
current directory.
Example 2 Removing Files
The following comand removes all files in your home direc-
tory 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 {} \;
Example 3 Printing All File Names But Skipping SCCS Direc-
tories
The following command recursively print all file names in
the current directory and below, but skipping SCCS direc-
tories:
example% find . -name SCCS -prune -o -print
Example 4 Printing all file names and the SCCS directory
name
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
Example 5 Testing for the Newer File
The following command is basically 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"
Example 6 Selecting a File Using 24-hour Mode
The descriptions of -atime, -ctime, and -mtime use the ter-
minology n ``24-hour periods''. For example, a file accessed
at 23:59 is 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.
Example 7 Printing Files Matching a User's Permission Mode
The following command recursively print all file names whose
permission mode exactly matches read, write, and execute
access for user, and read and execute access for group and
other:
example% find . -perm u=rwx,g=rx,o=rx
The above could alternatively be specified as follows:
example% find . -perm a=rwx,g-w,o-w
Example 8 Printing Files with Write Access for other
The following command recursively print all file names whose
permission includes, but is not limited to, write access for
other:
example% find . -perm -o+w
Example 9 Printing Local Files without Descending Non-local
Directories
example% find . ! -local -prune -o -print
Example 10 Printing the Files in the Name Space Possessing
Extended Attributes
example% find . -xattr
ENVIRONMENT VARIABLES
See environ(5) for descriptions of the following environment
variables that affect the execution of find: LANG, LC_ALL,
LC_COLLATE, LC_CTYPE, LC_MESSAGES, and NLSPATH.
PATH Determine the location of the
utility_name for the -exec and -ok pri-
maries.
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
ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Availability | SUNWcsu |
|_____________________________|_____________________________|
| CSI | Enabled |
|_____________________________|_____________________________|
| Interface Stability | Standard |
|_____________________________|_____________________________|
SEE ALSO
chmod(1), cpio(1), ls(1B), sh(1), test(1), acl(2), stat(2),
umask(2), attributes(5), environ(5), fsattr(5), large-
file(5), standards(5)
WARNINGS
The following options are obsolete and will not be supported
in future releases:
-cpio device Always true. Writes the current file on
device in cpio format (5120-byte
records).
-ncpio device Always true. Writes 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, use the -mtime argument before the -print argument.
Otherwise, find gives all files.
Some files that might be under the Solaris root file system
are actually mount points for virtual file systems, such as
mntfs or namefs. When comparing against a ufs file system,
such files are not selected if -mount or -xdev is specified
in the find expression.
Using the -L or -follow option is not recommended when des-
cending a file-system hierarchy that is under the control of
other users. In particular, when using -exec, symbolic links
can lead the find command out of the hierarchy in which it
started. Using -type is not sufficient to restrict the type
of files on which the -exec command operates, because there
is an inherent race condition between the type-check per-
formed by the find command and the time the executed command
operates on the file argument.
