find

Name

find --  search for files in a directory hierarchy

Description

The specification for "find" is as specified in the SUS but with the additional options as specified below.

Additional Options

-daystart

Measure times (for -amin, -atime, -cmin, -ctime, -mmin, and -mtime) from the beginning of today rather than from 24 hours ago.

-follow

Dereference symbolic links. Implies -noleaf.

-maxdepth levels

Descend at most levels (a non-negative integer) levels of directories below the command line arguments. -maxdepth 0 means only apply the tests and actions to the command line arguments.

-mindepth levels

Do not apply any tests or actions at levels less than levels (a non-negative integer). -mindepth 1 means process all files except the command line arguments.

-mount

Equivalent to -xdev as specified in the SUS.

-noleaf

Do not optimize by assuming that directories contain 2 fewer subdirectories than their hard link count.

-version

Print the find version number and exit.

-amin n

File was last accessed n minutes ago.

-anewer file

File was last accessed more recently than file was modified. -anewer is affected by -follow only if -follow comes before -anewer on the command line.

-cmin n

File's status was last changed n minutes ago.

-cnewer file

File's status was last changed more recently than file was modified. -cnewer is affected by -follow only if -follow comes before -cnewer on the command line.

-empty

File is empty and is either a regular file or a directory.

-false

Always false.

-fstype type

File is on a filesystem of type type.

-gid n

File's numeric group ID is n.

-ilname pattern

Like -lname, but the match is case insensitive.

-iname pattern

Like -name, but the match is case insensitive.

-inum n

File has inode number n.

-ipath path

Like -path, but the match is case insensitive.

-iregex pattern

Like -regex, but the match is case insensitive.

-lname

File is a symbolic link whose contents match shell pattern pattern. The metacharacters do not treat / or . specially.

-mmin n

File's data was last modified n minutes ago.

-nouser

No user corresponds to file's numeric user ID.

-nogroup

No group corresponds to file's numeric group ID.

-path pattern

File name matches shell pattern pattern.

-perm +mode

Any of the permission bits mode are set for the file.

-regex

File name matches regular expression pattern. This is a match on the whole path, not a search.

-true

Always true.

-type c

In addition to the types specified in the SUS, the letters l and s are also supported and refer to symbolic links and sockets respectively.

-uid n

File's numeric user ID is n.

-used

File was last accessed n days after its status was last changed.

-xtype c

The same as -type unless the file is a symbolic link. For symbolic links: if -follow has not been given, true if the file is a link to a file of type c; if -follow has been given, true if c is l. In other words, for symbolic links, -xtype checks the type of the file that -type does not check.

-fls file

True; like -ls but write to file like -fprint.

-fprint file

True; print the full file name into file file. If file does not exist when find is run, it is cre- ated; if it does exist, it is truncated. The file names `/dev/stdout' and `/dev/stderr' are han- dled specially; they refer to the standard output and standard error output, respectively.

-fprint0 file

True; like -print0 but write to file like -fprint.

-fprintf file

True; like -printf but write to file like -fprint.

-print0

True; print the full file name on the standard output, followed by a null character. This allows file names that contain newlines to be correctly interpreted by programs that process the find output.

-printf

True; print on the standard output, inter- preting \ escapes and % directives. Field widths and precisions can be specified as with the printf C function. Unlike -print, -printf does not add a newline at the end of the string. The escapes and directives are:

\a

Alarm bell.

\b

Backspace.

\c

Stop printing from this immediately and flush the output.

\f

Form feed.

\n

Newline.

\r

Carriage return.

\t

Horizontal tab.

\v

Vertical tab.

\\

A literal backslash (\).

%%

A literal percent sign.

%a

File's last access time in the returned by the C ctime function.

%Ak

File's last access time in the specified by k, which is either @ or a directive for the C strftime function. The possible values for k are listed below; some of them might not be available on all systems, due to differences in strftime between systems.

@

seconds since Jan. 1, 1970, 00:00 GMT.

H

hour (00..23)

I

hour (01..12)

k

hour ( 0..23)

l

hour ( 1..12)

M

minute (00..59)

p

locale's AM or PM

r

time, 12-hour (hh:mm:ss [AP]M)

S

second (00..61)

T

time, 24-hour (hh:mm:ss)

X

locale's time representation (H:M:S)

Z

time zone (e.g., EDT), or nothing if no time zone is determinable

a

locale's abbreviated weekday name (Sun..Sat)

A

locale's full weekday name, variable length (Sunday..Saturday)

b

locale's abbreviated month name (Jan..Dec)

B

locale's full month name, variable

c

locale's date and time (Sat Nov 04 12:02:33 EST 1989)

d

day of month (01..31)

D

date (mm/dd/yy)

h

same as b

j

day of year (001.366)

m

month (01..12)

U

week number of year with Sunday as first day of week (00..53)

w

day of week (0..6)

W

week number of year with Monday as first day of week (00..53)

x

locale's date representation (mm/dd/yy)

y

last two digits of year (00..99)

Y

year (1970...)

%b

File's size in 512-byte blocks (rounded up).

%c

File's last status change time in the returned by the C ctime function.

%Ck

File's last status change time in the specified by k, which is the same as for %A.

%d

File's depth in the directory tree; 0 means the file is a command line argument.

%f

File's name with any leading directories removed (only the last element).

%F

Type of the filesystem the file is on; this value can be used for -fstype.

%g

File's group name, or numeric group ID if the group has no name.

%G

File's numeric group ID.

%h

Leading directories of file's name (all but the last element).

%H

Command line argument under which file was found.

%i

File's inode number (in decimal).

%k

File's size in 1K blocks (rounded up).

%l

Object of symbolic link (empty string if file is not a symbolic link).

%m

File's permission bits (in octal).

%n

Number of hard links to file.

%p

File's name.

%P

File's name with the name of the command line argument under which it was found removed.

%s

File's size in bytes.

%t

File's last modification time in the returned by the C ctime function.

%Tk

File's last modification time in the specified by k, which is the same as for %A.

%u

File's user name, or numeric user ID if the user has no name.

%U

File's numeric user ID.

-ls

True; list current file in ls -dils on standard output. The block counts are of 1K blocks, unless the environment variable POSIXLY_CORRECT is set, in which case 512-byte blocks are used.

Extra Operators

The following operators are supported in order of decreasing precedence. This overrides what is stated in the SUS.

( expr )

Force precedence.

! expr

True if expr is false

-not expr

Same as ! expr.

expr1 expr2

And (implied); expr2 is not evaluated if expr1 is false.

expr1 -a expr2

Same as expr1 expr2.

expr1 -and expr2

Same as expr1 expr2.

expr1 -o expr2

Or; expr2 is not evaluated if expr1 is true.

expr1 -or expr2

Same as expr1 -o expr2.

expr1, expr2

List; both expr1 and expr2 are always evaluated. The value of expr1 is discarded; the value of the list is the value of expr2.