Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

sh(1)

test(1)

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

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026