 |
Index for Section 1 |
|
 |
Alphabetical listing for F |
|
 |
Bottom of page |
|
find(1)
NAME
find - Finds files matching an expression
SYNOPSIS
find pathname... expression
STANDARDS
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.
OPTIONS
None
OPERANDS
pathname
Starting point in the directory hierarchy.
expression
Series of arguments built as described in the DESCRIPTION section.
DESCRIPTION
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
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
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).
-atime number
TRUE if the file was accessed in the past number days, where number is
interpreted as described in this reference page.
-cpio device
Writes the current file to device in cpio format. See the cpio
command.
-ctime number
TRUE if the file inode was changed in the past number days, where
number is interpreted as described in this reference page.
-depth
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.
-exec command
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.
\( expression \)
TRUE if expression is TRUE.
-follow
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.
-fstype type
TRUE if the file system to which the file belongs is of the type type
as follows:
ufs [Tru64 UNIX] UNIX File System (Berkeley fast file system) or a
swap partition
nfs [Tru64 UNIX] Network File System (NFS), Version 2 protocol
mfs [Tru64 UNIX] Memory File System (RAM Disk) (See mfs(8))
pcfs
[Tru64 UNIX] PC File System
sysv
[Tru64 UNIX] System V File System
cdfs
[Tru64 UNIX] ISO 9660 or High Sierra Formatted (CD-ROM) File
System
dfs [Tru64 UNIX] DCE Distributed File System
efs [Tru64 UNIX] DCE Episode File System
procfs
[Tru64 UNIX] Process File System (used by debuggers)
advfs
[Tru64 UNIX] Advanced File System (AdvFS)
ffm [Tru64 UNIX] File on File mount (used by streams)
fdfs
[Tru64 UNIX] File Descriptor File System (used by streams)
addon
[Tru64 UNIX] Reserved for third-party file systems
nfsv3
[Tru64 UNIX] Network File System, Version 3 protocol
-group group
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.
-i number
TRUE if file has inode number.
-inum number
TRUE if file has inode number.
-links number
[Tru64 UNIX] TRUE if the file has number links. See the ln command.
-ls 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).)
-mount
[Tru64 UNIX] TRUE if the current file is on the same file system as
the current starting path name.
-mtime number
TRUE if the file was modified in the past number days, where number is
interpreted as described in this reference page.
-name file
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.
-ncpio size
Sets the input/output size (5120 bytes by default) to size.
-newer file
TRUE if the current file was modified more recently than the file
indicated by file.
-ok command
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.
-perm octal_number
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
-print
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 "*"
-prune
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.
-size number
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.
-size numberc
TRUE if the file is number bytes long.
-size numberk
TRUE if the file is number kilobytes long. For this comparison, the
file size is rounded up to the nearest kilobyte.
-type type
TRUE if the file type is of the specified type as follows:
b [Tru64 UNIX] Block special file
c [Tru64 UNIX] Character special file
d Directory
f Plain file
l [Tru64 UNIX] Symbolic link
p [Tru64 UNIX] FIFO (a named pipe)
s [Tru64 UNIX] Socket
-user user
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.
-xdev
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):
1. 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.
2. The negation of a primary (! is the unary not operator).
3. Concatenation of primaries (the and operation is implied by the
juxtaposition of two primaries but can also be specified explicitly
with the -a operator).
4. 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.
EXIT STATUS
The following exit values are returned:
0 All pathname operands were traversed successfully.
>0 An error occurred.
RETURN VALUES
The -exec command expression evaluates TRUE if the command runs and returns
a 0 (zero) value as exit status.
EXAMPLES
1. 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 .profile. The / (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.
2. 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.
3. 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 owner-read 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.
4. 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.
5. To find all accessible files whose path name begins with find, enter:
find find -print
6. 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
7. To find all files modified within the last 24 hours, enter:
find . -mtime 1 -print
8. To find all files on the root file system, enter:
find / -mount -print
9. 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].
.
.
10. To find all the mount points on the root file system, enter:
find / ! -mount -print
11. 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
-rw-r--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
12. 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
13. 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
14. 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
15. 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
16. 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
17. 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
18. The following example finds all files that have an owning group other
than the group users.
% find . ! -group users
./filek
./gfilek
./hfilek
19. 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
20. 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
The following environment variables affect the execution of find:
LANG
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.
LC_ALL
If set to a non-empty string value, overrides the values of all the
other internationalization variables.
LC_CTYPE
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).
LC_MESSAGES
Determines the locale for the format and contents of diagnostic
messages written to standard error.
NLSPATH
Determines the location of message catalogues for the processing of
LC_MESSAGES.
PATH
Determines the location of command for -exec and -ok primaries.
FILES
/etc/group
Contains group information.
/etc/passwd
Contains user information.
SEE ALSO
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)
 |
Index for Section 1 |
|
 |
Alphabetical listing for F |
|
 |
Top of page |
|