find - Finds files matching an expression
find pathname... expression
Interfaces documented on this reference page conform to
industry standards as follows:
find: XCU5.0
Refer to the standards(5) reference page for more information
about industry standards and associated tags.
None
Starting point in the directory hierarchy. Series of
arguments built as described in the DESCRIPTION section.
The find command recursively searches the directory tree
for each specified path name, seeking files that match the
Boolean expression. The output from the find command
varies depending on the terms used in expression.
Pathname [Toc] [Back]
The pathname operand is the starting point in a directory
tree for the search. If a file name is used for the path
name, the current directory is assumed. A null path name
is not permitted, i.e., find "" returns an error.
Expressions [Toc] [Back]
In the following descriptions, the argument number is a
decimal integer that can be specified as +number (more
than number), -number (less than number), or number
(exactly number). TRUE if the file was accessed in the
past number days, where number is interpreted as described
in this reference page. Writes the current file to device
in cpio format. See the cpio command. TRUE if the file
inode was changed in the past number days, where number is
interpreted as described in this reference page. Always
evaluates to TRUE. This causes the descent of the directory
hierarchy to be done so that all entries in a directory
are affected before the directory itself. This can
be useful when find is used with cpio to transfer files
that are contained in directories without write permission.
TRUE if the command runs and returns a 0 (zero)
value as exit status. The end of command must be punctuated
by a quoted or escaped ; (semicolon). The command
parameter { } is replaced by the current path name. TRUE
if expression is TRUE. Always evaluates to TRUE . Causes
symbolic links to be followed. When following symbolic
links, the find command keeps track of the directories
visited so that infinite loops can be detected. For example,
a loop can occur if a symbolic link points to an
ancestor. This expression should not be used with the
-type type expression where type is of type l. TRUE if
the file system to which the file belongs is of the type
type as follows: [Tru64 UNIX] UNIX File System (Berkeley
fast file system) or a swap partition [Tru64 UNIX] Network
File System (NFS), Version 2 protocol [Tru64
UNIX] Memory File System (RAM Disk) (See mfs(8)) [Tru64
UNIX] PC File System [Tru64 UNIX] System V File System
[Tru64 UNIX] ISO 9660 or High Sierra Formatted (CD-ROM)
File System [Tru64 UNIX] DCE Distributed File System
[Tru64 UNIX] DCE Episode File System [Tru64 UNIX] Process
File System (used by debuggers) [Tru64
UNIX] Advanced File System (AdvFS) [Tru64 UNIX] File on
File mount (used by streams) [Tru64 UNIX] File Descriptor
File System (used by streams) [Tru64 UNIX] Reserved for
third-party file systems [Tru64 UNIX] Network File System,
Version 3 protocol TRUE if the file belongs to group.
If group is numeric and does not appear as a group name in
the /etc/group file, it is interpreted as a group ID.
TRUE if file has inode number. TRUE if file has inode
number. [Tru64 UNIX] TRUE if the file has number links.
See the ln command. Always evaluates to TRUE; causes
pathname to be printed together with its associated
statistics. These include, respectively, inode number,
size in kilobytes (1024 bytes), protection mode, number of
hard links, user, group, size in bytes, and modification
time. If the file is a special file, the size field will
contain instead the major and minor device numbers.
[Tru64 UNIX] The find command does not follow symbolic
links to other directories or files. Rather,
it applies the specified selection criteria to the
symbolic links themselves, treating them as if they
were ordinary files. (For more information on symbolic
links, see ln(1).) [Tru64 UNIX] TRUE if the
current file is on the same file system as the current
starting path name. TRUE if the file was modified
in the past number days, where number is
interpreted as described in this reference page.
TRUE if file matches the file name. You can use
pattern-matching characters, provided they are
quoted. In an expression such as [a-z], the dash
means through according to the current collating
sequence. The collating sequence is determined by
the value of the LC_COLLATE environment variable.
See the reference page for your current shell for a
more detailed explanation of pattern matching and
quoting special characters. Sets the input/output
size (5120 bytes by default) to size. TRUE if the
current file was modified more recently than the
file indicated by file. The find command asks you
whether it should start command. If your response
begins with y, or the locale's equivalent of a y,
command is started. The end of command must be
punctuated by a quoted or escaped semicolon. TRUE
if the file permission code of the file exactly
matches octal_number (see the chmod(1) reference
page).
The octal_number argument may be up to three octal
digits. If you want to test the higher-order permission
bits (the set-user-ID bit or set-group-ID
bit, for example), prefix the octal_number argument
with a - (dash). This makes more flag bits significant
(see the stat system call for an explanation
of the additional bits), and also changes the comparison
to
(flags&octal_number)==octal_number Always TRUE;
causes the current path name to be displayed. If an
expression is not specified or if expression is not
-ok or -exec, -print is the default. For example,
the following commands produce the same result:
find . find . -print find . -name "*"
Always TRUE. Prunes the search tree at the file.
That is, if the current path name is a directory,
the find command does not descend into that directory.
In a networking environment, this flag keeps
the find command from searching through remote file
systems. TRUE if the file is number blocks long
(512 bytes per block). For this comparison, the
file size is rounded up to the nearest block. TRUE
if the file is number bytes long. TRUE if the file
is number kilobytes long. For this comparison, the
file size is rounded up to the nearest kilobyte.
TRUE if the file type is of the specified type as
follows: [Tru64 UNIX] Block special file [Tru64
UNIX] Character special file Directory Plain file
[Tru64 UNIX] Symbolic link [Tru64 UNIX] FIFO (a
named pipe) [Tru64 UNIX] Socket TRUE if the file
belongs to user. If user is numeric and does not
appear as a login name in the /etc/passwd file, it
is interpreted as a user ID. Always TRUE; causes
find not to traverse down a file system different
from the one on which the current path name
resides.
The primaries may be combined using the following operators
(in descending order of precedence): A parenthesized
group of primaries and operators. Parentheses are special
to the shell and must be escaped. Parentheses must be separated
from other primaries and operators by at least one
space. The negation of a primary (! is the unary not
operator). Concatenation of primaries (the and operation
is implied by the juxtaposition of two primaries but can
also be specified explicitly with the -a operator).
Alternation of primaries (-o is the or operator).
To avoid unpredictable results when using a range expression
to match a class of characters, use a character class
expression rather than a standard range expression. For
information about character class expressions, see the
grep command.
The following exit values are returned: All pathname
operands were traversed successfully. An error occurred.
The -exec command expression evaluates TRUE if the command
runs and returns a 0 (zero) value as exit status.
To list all files in the file system with a given base
file name, enter: find / -name .profile -print
This searches the entire file system and writes the
complete path names of all files named / (forwardslash)
tells find to search the root directory and
all of its subdirectories. This may take a while,
so it is best to limit the search by specifying the
directories where you think the files might be. To
list the files with a specific permission code in
the current directory tree, enter: find . -perm
0600 -print
This lists the names of the files that have only
owner-read and owner-write permission. The (dot)
tells find to search the current directory and its
subdirectories. See the chmod(1) reference page for
details about permission codes. To search several
directories for files with certain permission
codes, enter: find manual clients proposals -perm
-0600 -print
This lists the names of the files that have ownerread
and owner-write permission and possibly other
permissions. The directories manual, clients, and
proposals, and their subdirectories, are searched.
Note that -perm 0600 in the previous example
selects only files with permission codes that match
0600 exactly. In this example, -perm -0600 selects
files with permission codes that allow at least the
accesses indicated by 0600. This also matches the
permission codes 0622 and 2744. To search for regular
files with multiple links, enter: find . -type
f -links +1 -print
This lists the names of the ordinary files (-type
f) that have more than one link (-links +1). Note
that every directory has at least two links: the
entry in its parent directory and its own (dot)
entry. See the ln command for details about multiple
file links. To find all accessible files whose
path name begins with find, enter: find find -print
To remove all files named a.out or *.o that have
not been accessed for a week and that are not
mounted using nfs, enter: find / \( -name a.out -o
-name '*.o' \) -atime +7 -exec \
rm {} \; -o -fstype nfs -prune To find all
files modified within the last 24 hours, enter:
find . -mtime 1 -print To find all files on the
root file system, enter: find / -mount -print To
write all the files on the root file system to
tape, enter: find / -mount -print -cpio
/dev/tape/tape?_d0 cpio -iBvt </dev/tape?_d0
Where ? is the instance number of the tape device,
commonly "0" on a single-tape system. Use the hwmgr
command to determine instance numbers, as follows:
# hwmgr show scsi . . 61: 3 cymro
tape none 0 1 tape0 [5/0/0]. . .
To find all the mount points on the root file system,
enter: find / ! -mount -print The next several
examples show how to build complex expressions
using the available operators. These examples use
the directory structure that follows: % ls -al
total 77 drwxr-xr-x 9 me users 8192
Nov 6 17:28 . drwxrwxrwx 47 me users
8192 Nov 6 13:30 .. -rw-r--r-- 1 me users
1559 Dec 23 1996 7 -rw-r--r-- 1 me users
7 May 30 12:22 abc -rw-r--r-- 1 me users
0 Nov 5 17:44 ccc drwxr-xr-x 2 me users
8192 Apr 6 1997 crn drwxr-xr-x 3 me users
8192 Mar 23 1997 crypto drwxr-xr-x 2 me
users 8192 Sep 12 14:24 exp -rwx--x--x 1 me
users 0 Nov 1 1996 filea ---x-w--wx 1
me users 0 Nov 1 1996 fileb -rwr--r--
1 me adm 0 Jun 13 13:43
filek -rwxr-xr-x 1 me users 216 Nov
1 1996 filet -rw-r--r-- 1 me users
0 Nov 6 17:35 find -rw-r--r-- 1 me adm
0 Jun 13 13:43 gfilek -rwxr-xr-x 1 me users
216 Nov 6 17:28 gfilet drwxr-xr-x 2 me
users 8192 Oct 23 13:49 h4d -rw-r--r-- 1 me
adm 0 Jun 13 13:43 hfilek drwxr-xr-x 2
me users 8192 Oct 23 11:50 resume
drwxr-xr-x 2 me users 8192 Sep 8
13:31 timtst -rw-r--r-- 1 me users
0 Nov 6 17:25 typescript drwxr-xr-x 2 me
users 8192 Dec 18 1996 wordgame The following
example finds all files that have a name starting
with file. Notice that the asterisk must be
escaped to prevent the shell from interpreting it
as a special character. % find . -name file\*
./filea ./fileb ./filet ./filek The following example
finds all files that have a name starting with
file and an owning group of adm. Notice that this
is the default behavior, and is identical to the
next example using the -a operator. % find . -name
file\* -group adm
./filek The following example finds all files that
have a name starting with file and an owning group
of adm. Notice that this is identical to the prior
example of the default behavior. % find . -name
file\* -a -group adm
./filek The following example finds all files that
have a name starting with file or that have an owning
group of adm. % find . -name file\* -o -group
adm
./filea ./fileb ./filet ./filek ./gfilek ./hfilek
The following example finds all files that have a
name starting with file or that have an owning
group of adm and a name starting with gf. % find .
-name file\* -o -group adm -name gf\*
./filea ./fileb ./filet ./filek ./gfilek The following
example finds all files that have a name
starting with file and that have an owning group of
adm or a name starting with gf. % find . -name
file\* -a -group adm -o -name gf\*
./filek ./gfilek ./gfilet The following example
finds all files that have an owning group other
than the group users. % find . ! -group users
./filek ./gfilek ./hfilek The following example
finds all files owned by the group users and that
have a name starting with file or that have a name
starting with cc. % find . \( -group users -a
-name file\* \) -o -name cc\*
./filea ./fileb ./filet ./ccc The following example
finds all files not owned by the group users and
that have a name starting with file or that have a
name starting with cc. % find . \( ! -group users
-a -name file\* \) -o -name cc\*
./filek ./ccc
ENVIRONMENT VARIABLES [Toc] [Back] The following environment variables affect the execution
of find: Provides a default value for the internationalization
variables that are unset or null. If LANG is unset
or null, the corresponding value from the default locale
is used. If any of the internationalization variables contain
an invalid setting, the utility behaves as if none of
the variables had been defined. If set to a non-empty
string value, overrides the values of all the other internationalization
variables. Determines the locale for the
interpretation of sequences of bytes of text data as characters
(for example, single-byte as opposed to multibyte
characters in arguments). Determines the locale for the
format and contents of diagnostic messages written to
standard error. Determines the location of message catalogues
for the processing of LC_MESSAGES. Determines the
location of command for -exec and -ok primaries.
Contains group information. Contains user information.
Commands: chmod(1), cpio(1), df(1), grep(1), ln(1),
mount(8), Bourne shell sh(1b), POSIX shell sh(1p), test(1)
Functions: mount(2), stat(2)
Routines: getvfsbyname(3)
Files: fs(4), fstab(4), cdfs(4)
Standards: standards(5)
find(1)
[ Back ] |