FIND(1) BSD FIND(1)
NAME
find - find files
SYNOPSIS
find pathname-list expression
find pattern
DESCRIPTION
In the first form above, find recursively descends the directory
hierarchy for each pathname in the pathname-list (that is, one or more
pathnames) seeking files that match a Boolean expression written in the
primaries given below.
The second form rapidly searches a database (/usr/lib/find/find.codes)
for all pathnames that match pattern. The database is created by running
the shell script /usr/lib/find/updatedb, and is usually recomputed
regularly by cron(8). The database contains the pathnames of all files
that are publicly accessible. The /usr/lib/find/updatedb script can be
modified to create a list of site-specific local directories.
If escaped, normal shell "globbing" characters (*, ?, [, and ]) may be
used in pattern, but the matching differs in that no characters (for
example, /) have to be matched explicitly. As a special case, a simple
pattern containing no globbing characters is matched as though it were
*pattern*; if any globbing character appears there are no implicit
globbing characters.
EXPRESSIONS
In the following 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.
-name filename
True if the filename argument matches the current filename.
Normal shell argument syntax may be used if escaped (watch
out for `[', `?' and `*').
-perm onum True if the file permission flags exactly match the octal
number onum (see chmod(1)). If you prefix onum by a minus
sign, more flag bits (017777, see stat(2)) become
significant and the flags are compared:
(flags&onum)==onum.
-type c True if the type of the file is c, where c is b, c, d, f,
l, or s for block special file, character special file,
directory, plain file, symbolic link, or socket,
respectively.
-links n True if the file has n links.
-user uname True if the file belongs to the user uname (log-in name or
numeric user ID).
-nouser True if the file belongs to a user not in /etc/passwd.
-group gname True if the file belongs to group gname (group name or
numeric group ID).
-nogroup True if the file belongs to a group not in /etc/group.
-size n True if the file is n blocks long (512 bytes per block).
-inum n True if the file has inode number n.
-atime n True if the file has been accessed in n days.
-mtime n True if the file has been modified in n days.
-exec command True if the executed command returns a zero value as exit
status. You must punctuate the end of the command by an
escaped semicolon. A command argument `{}' is replaced by
the current pathname.
-ok command Like -exec but prints the generated command on the standard
output, then reads the standard input and executes the
command only if you respond by typing y.
-print Always true; prints the current pathname.
-ls Always true; causes the current pathname to be printed
together with its associated statistics. These include (in
the order they are printed) 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 contains the major and
minor device numbers instead. 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. However, formatting is done internally, without
executing the ls program).
-newer file True if the current file was modified more recently than
the argument file.
-cpio file Write the current file on the argument file in cpio format.
-xdev Always true; causes find not to traverse down into a file
system different from the one on which current argument
pathname resides.
OPERATORS
You can combine the primaries listed above, using the following operators
(in order of decreasing precedence):
1. A parenthesized group of primaries and operators (parentheses are
special to the shell and you must escape them).
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).
4. Alternation of primaries (-o is the or operator).
EXAMPLES
To find all accessible files whose pathname contains find, enter
% find find
To remove all files named a.out or *.o that have not been accessed for a
week, enter
% find / \( -name a.out -o -name '*.o' \) -atime +7 -exec rm {} \;
FILES
/etc/passwd
/etc/group
/usr/lib/find/find.codes Coded pathnames database
/usr/lib/find/updatedb Shell script to create database
NOTES
If you're modifying anything in /usr/lib/find, you might be working in
shared space (/usr/lib/find may be a link).
BUGS
The first form's syntax is painful, and the second form's exact semantics
is confusing and can vary from site to site.
More than one -newer option does not work properly.
SEE ALSO
sh(1), test(1)
Relevant paper in February, 1983 issue of ;login:.