sbase

suckless unix tools
git clone git://git.suckless.org/sbase
Log | Files | Refs | README | LICENSE

find.1 (3655B)


      1 .Dd July 30, 2025
      2 .Dt FIND 1
      3 .Os sbase
      4 .Sh NAME
      5 .Nm find
      6 .Nd find files
      7 .Sh SYNOPSIS
      8 .Nm
      9 .Op Fl H | L
     10 .Ar path Op ...
     11 .Op Ar expression
     12 .Sh DESCRIPTION
     13 .Nm
     14 walks a file hierarchy starting at each
     15 .Ar path
     16 and applies the
     17 .Ar expression
     18 to each file encountered.
     19 .Sh OPTIONS
     20 .Bl -tag -width Ds
     21 .It Fl H
     22 Dereference symbolic links provided as
     23 .Ar path .
     24 .It Fl L
     25 Dereference all symbolic links encountered.
     26 .El
     27 .Sh EXTENDED DESCRIPTION
     28 .Ar expression
     29 is a combination of the following primaries and boolean operators.
     30 In the following descriptions the number n can be replaced by +n, n, or
     31 -n, to mean more than, exactly, or less than n respectively.
     32 .Ss Primaries
     33 .Bl -tag -width Ds
     34 .It Fl name Ar pattern
     35 True if the name of the file matches the given pattern.
     36 .It Fl path Ar pattern
     37 True if the path to the file matches the given pattern.
     38 .It Fl nouser
     39 True if the file belongs to a user for which
     40 .Xr getpwuid 3
     41 returns NULL.
     42 .It Fl nogroup
     43 True if the file belongs to a group for which
     44 .Xr getgrgid 3
     45 returns NULL.
     46 .It Fl xdev
     47 True.
     48 Do not enter directory on a different device.
     49 .It Fl prune
     50 True.
     51 Do not enter directory.
     52 .It Fl perm Ar mode
     53 True if permissions on the file match mode.
     54 Mode is a symbolic mode as used in chmod.
     55 A leading '-' in mode checks that at least all bits in mode are set in
     56 permissions for file.
     57 Without the leading '-' the permissions for file must exactly match
     58 mode.
     59 .It Fl type Ar t
     60 True if file is of type specified by
     61 .Ar t .
     62 .Bl -tag -width Ds
     63 .It Ar b
     64 block special
     65 .It Ar c
     66 character special
     67 .It Ar d
     68 directory
     69 .It Ar l
     70 symbolic link
     71 .It Ar p
     72 FIFO
     73 .It Ar f
     74 regular file
     75 .It Ar s
     76 socket
     77 .El
     78 .It Fl links Ar n
     79 True if file has
     80 .Ar n
     81 links.
     82 .It Fl user Ar name
     83 True if file belongs to user
     84 .Ar name .
     85 .It Fl group Ar name
     86 True if file belongs to group
     87 .Ar name .
     88 .It Fl size Ar n[c]
     89 True if file size in 512 byte sectors (rounded up), or bytes (if
     90 .Ar c
     91 is given), is
     92 .Ar n .
     93 .It Fl atime n
     94 True if file access time is
     95 .Ar n
     96 days.
     97 .It Fl ctime
     98 True if file status change time is
     99 .Ar n
    100 days.
    101 .It Fl mtime
    102 True if file modified time is
    103 .Ar n
    104 days.
    105 .It Fl exec Ar cmd [arg ...] \&;
    106 Execute cmd with given arguments, replacing each {} in argument list
    107 with the current file.
    108 True if cmd exits with status 0.
    109 .It Fl exec Ar cmd [arg ...] {} +
    110 True.
    111 Add as many files as possible to argument list and execute when the list
    112 is full or all files have been found.
    113 .It Fl ok Ar cmd [arg ...] \&;
    114 Prompt the user on each file encountered whether or not to execute cmd
    115 as with -exec.
    116 True if the user responds yes and cmd exits with status 0, false
    117 otherwise.
    118 .It Fl print
    119 True.
    120 Print the current pathname followed by a newline ('\en') character.
    121 .It Fl print0
    122 True.
    123 Print the current pathname followed by a NUL ('\e0') character.
    124 .It Fl newer Ar file
    125 True if the modification time of the current file is newer than that of
    126 the provided file.
    127 .It Fl depth
    128 True.
    129 Causes find to evaluate files within in a directory before the directory
    130 itself.
    131 .El
    132 .Ss Operators
    133 In order of decreasing precedence
    134 .Bl -tag -width Ds
    135 .It Ar \&( expression \&)
    136 True if expression is true.
    137 .It Ar \&! expression
    138 True if expression if false.
    139 .It Ar expression [ Fl a ] Ar expression
    140 True if both expressions are true.
    141 Second expression is not evaluated if first expression is false.
    142 .Fl a
    143 is implied if there is no operator between primaries.
    144 .It Ar expression Fl o Ar expression
    145 True if either expression is true.
    146 Second expression is not evaluated if first expression is true.
    147 .El
    148 .Pp
    149 If no expression is supplied, -print is used.
    150 If an expression is supplied but none of -print, -exec, or -ok is
    151 supplied, then -a -print is appended to the expressions.