| .Dd 2015-10-08 |
| .Dt FIND 1 |
| .Os sbase |
| .Sh NAME |
| .Nm find |
| .Nd find files |
| .Sh SYNOPSIS |
| .Nm |
| .Op Fl H | L |
| .Ar path Op ... |
| .Op Ar expression |
| .Sh DESCRIPTION |
| .Nm |
| walks a file hierarchy starting at each |
| .Ar path |
| and applies the |
| .Ar expression |
| to each file encountered. |
| .Sh OPTIONS |
| .Bl -tag -width Ds |
| .It Fl H |
| Dereference symbolic links provided as |
| .Ar path . |
| .It Fl L |
| Dereference all symbolic links encountered. |
| .El |
| .Sh EXTENDED DESCRIPTION |
| .Ar expression |
| is a combination of the following primaries and boolean operators. In |
| the following descriptions the number n can be replaced by +n, n, or -n, |
| to mean more than, exactly, or less than n respectively. |
| .Ss Primaries |
| .Bl -tag -width Ds |
| .It Fl name Ar pattern |
| True if the name of the file matches the given pattern. |
| .It Fl path Ar pattern |
| True if the path to the file matches the given pattern. |
| .It Fl nouser |
| True if the file belongs to a user for which getpwuid() returns NULL. |
| .It Fl nogroup |
| True if the file belongs to a group for which getgrgid() returns NULL. |
| .It Fl xdev |
| True. Do not enter directory on a different device. |
| .It Fl prune |
| True. Do not enter directory. |
| .It Fl perm Ar mode |
| True if permissions on the file match mode. Mode is a symbolic mode |
| as used in chmod. A leading '-' in mode checks that at least all bits |
| in mode are set in permissions for file. Without the leading '-' the |
| permissions for file must exactly match mode. |
| .It Fl type Ar t |
| True if file is of type specified by |
| .Ar t . |
| .Bl -tag -width Ds |
| .It Ar b |
| block special |
| .It Ar c |
| character special |
| .It Ar d |
| directory |
| .It Ar l |
| symbolic link |
| .It Ar p |
| FIFO |
| .It Ar f |
| regular file |
| .It Ar s |
| socket |
| .El |
| .It Fl links Ar n |
| True if file has |
| .Ar n |
| links. |
| .It Fl user Ar name |
| True if file belongs to user |
| .Ar name . |
| .It Fl group Ar name |
| True if file belongs to group |
| .Ar name . |
| .It Fl size Ar n[c] |
| True if file size in 512 byte sectors (rounded up), or bytes (if |
| .Ar c |
| is given), is |
| .Ar n . |
| .It Fl atime n |
| True if file access time is |
| .Ar n |
| days. |
| .It Fl ctime |
| True if file status change time is |
| .Ar n |
| days. |
| .It Fl mtime |
| True if file modified time is |
| .Ar n |
| days. |
| .It Fl exec Ar cmd [arg ...] \&; |
| Execute cmd with given arguments, replacing each {} in argument list |
| with the current file. True if cmd exits with status 0. |
| .It Fl exec Ar cmd [arg ...] {} + |
| True. Add as many files as possible to argument list and execute when |
| the list is full or all files have been found. |
| .It Fl ok Ar cmd [arg ...] \&; |
| Prompt the user on each file encountered whether or not to execute cmd |
| as with -exec. True if the user responds yes and cmd exits with status 0, |
| false otherwise. |
| .It Fl print |
| True. Print the path to the current file. |
| .It Fl newer Ar file |
| True if the modification time of the current file is newer than that of |
| the provided file. |
| .It Fl depth |
| True. Causes find to evaluate files within in a directory before the |
| directory itself. |
| .El |
| .Ss Operators |
| In order of decreasing precedence |
| .Bl -tag -width Ds |
| .It Ar \&( expression \&) |
| True if expression is true. |
| .It Ar \&! expression |
| True if expression if false. |
| .It Ar expression [ Fl a ] Ar expression |
| True if both expressions are true. Second expression is not evaluated |
| if first expression is false. |
| .Fl a |
| is implied if there is no operator between primaries. |
| .It Ar expression Fl o Ar expression |
| True if either expression is true. Second expression is not evaluated |
| if first expression is true. |
| .El |
| .Pp |
| If no expression is supplied, -print is used. If an expression is supplied |
| but none of -print, -exec, or -ok is supplied, then -a -print is appended |
| to the expressions. |