Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

sh(1)

test(1)

FIND(1)  —  USER COMMANDS

NAME

find − find files

SYNOPSIS

find pathname-list expression

DESCRIPTION

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

−fstype type
True if the filesystem to which the the file belongs is of type type, where type is typically 4.2 or nfs

−name filename
True if the filename 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 onum (see chmod(1)). If onum is prefixed by a minus sign, more flag bits (017777, see chmod(1)) become significant and the flags are compared: (flags&onum)==onum.

−pruneAlways returns true.  Has the side effect of pruning the search tree at the file.  That is, if the current path name is a directory, find will not descend into that directory. 

−type cTrue if the type of the file is c, where c is one of:

bfor block special file,

cfor character special file,

dfor directory,

ffor plain file, or

lfor symbolic link. 

−links nTrue if the file has n links. 

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

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

−size nTrue if the file is n blocks long (512 bytes per block). 

−inum nTrue if the file has inode number n. 

−atime nTrue if the file has been accessed in n days. 

−mtime nTrue 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. 

−printAlways true; the current pathname is printed. 

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

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

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

!primary
The negation of a primary (‘!’ is the unary not operator). 

primary primary
Concatenation of primaries (the and operation is implied by the juxtaposition of two primaries). 

primary −o primary
Alternation of primaries (‘−o’ is the or operator). 

EXAMPLE

In our local development system, we keep a file called TIMESTAMP in all the manual page directories.  Here is how to find all entries that have been updated since TIMESTAMP was created:

angel% find /usr/man/man2 −newer /usr/man/man2/TIMESTAMP −print
/usr/man/man2
/usr/man/man2/socket.2
/usr/man/man2/mmap.2
angel%

To find all the files called intro.ms starting from the current directory:

angel% find . −name intro.ms −print
./manuals/assembler/intro.ms
./manuals/sun.core/intro.ms
./manuals/driver.tut/intro.ms
./manuals/sys.manager/uucp.impl/intro.mss
./supplements/general.works/unix.introduction/intro.mss
./supplements/programming.tools/sccs/intro.mss
angel%

To recursively print all files names in the current directory and below, but skipping SCCS directories:

angel% find . -name SCCS -prune -o -print
angel%

To recursively print all files names in the current directory and below, skipping the contents of SCCS directories, but printing out the SCCS directory name:

angel% find . -print -name SCCS -prune
angel%

To remove all files named ‘a.out’ or ‘∗.o’ that have not been accessed for a week:

angel% find / \( −name a.out −o −name ’∗.o’ \) −atime +7 −exec rm ’{}’ \;
angel%

Note that the brace ({ }) characters must be quoted when using the C-Shell. 

FILES

/etc/passwd
/etc/group

SEE ALSO

sh(1), test(1)

Sun Release 3.0β  —  Last change: 23 September 1985

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