FIND(1) — UNIX Programmer’s Manual
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. Expressions are evaluated left-to-right. In the descriptions, the argument n is used as a decimal integer where 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 fileTrue 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. You must leave at least one space between the parentheses and the group of primaries and operators.
!primary
The negation of a primary (‘!’ is the unary not operator).
primary [−a] primary
Concatenation of primaries. The and operation is implied by the juxtaposition of two primaries, but can be explicitly specified with the −a operator.
primary −o primary
Alternation of primaries (‘−o’ is the or operator).
EXAMPLES
To recursively find all file names starting from /usr/man/man2 that have been updated since the file TIMESTAMP was created, enter:
find /usr/man/man2 −newer /usr/man/man2/TIMESTAMP −print
To recursively print all file names starting from the current directory, but skipping the directory SCCS, enter:
find . -name SCCS -prune -o -print
To recursively remove all files named a.out or ∗.o that have not been accessed for a week starting from the current directory, enter:
find . \( −name a.out −o −name ’∗.o’ \) −atime +7 −exec rm {} \;
To recursively display the names of all files named a.out and with permissions 640 starting from the current directory, enter:
find . \( −name a.out −a −perm 640 \) −print
or enter:
find . −name a.out −a −perm 640 −print
Note that the −a is not necessary in either case.
FILES
/etc/passwd
/etc/group
SEE ALSO
4BSD