


FIND(1)             UNIX Programmer's Manual		  FIND(1)



NAME
     find - find files

SYNOPSIS
     find pathname-list expression
     find pattern

DESCRIPTION
     In the first form above, _f_i_n_d recursively descends the
     directory hierarchy for each pathname in the _p_a_t_h_n_a_m_e-_l_i_s_t
     (i.e., one or more pathnames) seeking files that match a
     boolean _e_x_p_r_e_s_s_i_o_n written in the primaries given below.  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.

     The second form rapidly searches a database for all path-
     names which match _p_a_t_t_e_r_n.  Usually the database is recom-
     puted weekly and contains the pathnames of all files which
     are publicly accessible.  If escaped, normal shell "glob-
     bing" characters (`*', `?', `[', and ']') may be used in
     _p_a_t_t_e_r_n, but the matching differs in that no characters
     (_e._g. `/') have to be matched explicitly.	As a special
     case, a simple _p_a_t_t_e_r_n containing no globbing characters is
     matched as though it were *_p_a_t_t_e_r_n*; if any globbing charac-
     ter appears there are no implicit globbing characters.

     -name filename
	       True if the _f_i_l_e_n_a_m_e argument matches the current
	       file name.  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 _o_n_u_m (see _c_h_m_o_d(1)).  If _o_n_u_m is
	       prefixed by a minus sign, more flag bits (017777,
	       see _s_t_a_t(2)) become significant and the flags are
	       compared: (_f_l_a_g_s&_o_n_u_m)==_o_n_u_m.

     -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.

     -links n  True if the file has _n links.

     -user uname
	       True if the file belongs to the user _u_n_a_m_e (login
	       name or numeric user ID).

     -nouser   True if the file belongs to a user _n_o_t in the
	       /etc/passwd database.



Printed 11/26/99	October 11, 1996			1






FIND(1)             UNIX Programmer's Manual		  FIND(1)



     -group gname
	       True if the file belongs to group _g_n_a_m_e (group
	       name or numeric group ID).

     -nogroup  True if the file belongs to a group _n_o_t in the
	       /etc/group database.

     -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.	The end of the command must be
	       punctuated by an escaped semicolon.  A command
	       argument `{}' is replaced by the current pathname.

     -ok command
	       Like -exec except that the generated command is
	       written on the standard output, then the standard
	       input is read and the command executed only upon
	       response y.

     -print    Always true; causes the current pathname to be
	       printed.

     -ls       Always true; causes current pathname to be printed
	       together with its associated statistics.  These
	       include (respectively) inode number, size in kilo-
	       bytes (1024 bytes), protection mode, number of
	       hard links, user, group, size in bytes, and modif-
	       ication time.  If the file is a special file the
	       size field will instead contain 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'' (note however that format-
	       ting is done internally, without executing the ls
	       program).

     -newer file
	       True if the current file has been modified more
	       recently than the argument _f_i_l_e.

     -cpio file
	       Write the current file on the argument _f_i_l_e in
	       _c_p_i_o format.



Printed 11/26/99	October 11, 1996			2






FIND(1)             UNIX Programmer's Manual		  FIND(1)



     -xdev     Always true; causes find _n_o_t to traverse down into
	       a file system different from the one on which
	       current _a_r_g_u_m_e_n_t pathname resides.

     The primaries may be combined using the following operators
     (in order of decreasing precedence):

     1)  A parenthesized group of primaries and operators
	 (parentheses are special to the Shell and must be
	 escaped).

     2)  The negation of a primary (`!' is the unary _n_o_t opera-
	 tor).

     3)  Concatenation of primaries (the _a_n_d operation is implied
	 by the juxtaposition of two primaries).

     4)  Alternation of primaries (`-o' is the _o_r operator).

EXAMPLES
     To find all accessible files whose pathname contains `find':

	  find find

     To typeset all variants of manual pages for `ls':

	  vtroff -man `find '*man*/ls.?'`

     To remove all files named `a.out' or `*.o' that have not
     been accessed for a week:

       find / \( -name a.out -o -name '*.o' \) -atime +7 -exec rm
       {} \;

FILES
     /etc/passwd
     /etc/group
     /var/db/find.codes     coded pathnames database

SEE ALSO
     sh(1), test(1), fs(5)
     Relevant paper in February, 1983 issue of ;_l_o_g_i_n:.

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.







Printed 11/26/99	October 11, 1996			3



