FIND(1) 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 hier‐ archy for each pathname in the _p_a_t_h_n_a_m_e_-_l_i_s_t (i.e., one or more path‐ names) 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 pathnames which match _p_a_t_t_e_r_n. Usually the database is recomputed weekly and contains the pathnames of all files which are publicly accessible. If escaped, normal shell “globbing” 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 character 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, direc‐ tory, 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. -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 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 instead contain the major and minor device num‐ bers. 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. -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 path‐ name 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 operator). 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 /usr/lib/find/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 seman‐ tics is confusing and can vary from site to site. More than one ‘-newer’ option does not work properly. 7th Edition May 11, 1986 FIND(1)