1*0a6a1f1dSLionel Sambuc.\" $NetBSD: find.1,v 1.81 2014/05/17 11:31:40 apb Exp $ 2319e7a6dSDavid van Moolenbroek.\" 3319e7a6dSDavid van Moolenbroek.\" Copyright (c) 1990, 1993 4319e7a6dSDavid van Moolenbroek.\" The Regents of the University of California. All rights reserved. 5319e7a6dSDavid van Moolenbroek.\" 6319e7a6dSDavid van Moolenbroek.\" This code is derived from software contributed to Berkeley by 7319e7a6dSDavid van Moolenbroek.\" the Institute of Electrical and Electronics Engineers, Inc. 8319e7a6dSDavid van Moolenbroek.\" 9319e7a6dSDavid van Moolenbroek.\" Redistribution and use in source and binary forms, with or without 10319e7a6dSDavid van Moolenbroek.\" modification, are permitted provided that the following conditions 11319e7a6dSDavid van Moolenbroek.\" are met: 12319e7a6dSDavid van Moolenbroek.\" 1. Redistributions of source code must retain the above copyright 13319e7a6dSDavid van Moolenbroek.\" notice, this list of conditions and the following disclaimer. 14319e7a6dSDavid van Moolenbroek.\" 2. Redistributions in binary form must reproduce the above copyright 15319e7a6dSDavid van Moolenbroek.\" notice, this list of conditions and the following disclaimer in the 16319e7a6dSDavid van Moolenbroek.\" documentation and/or other materials provided with the distribution. 17319e7a6dSDavid van Moolenbroek.\" 3. Neither the name of the University nor the names of its contributors 18319e7a6dSDavid van Moolenbroek.\" may be used to endorse or promote products derived from this software 19319e7a6dSDavid van Moolenbroek.\" without specific prior written permission. 20319e7a6dSDavid van Moolenbroek.\" 21319e7a6dSDavid van Moolenbroek.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 22319e7a6dSDavid van Moolenbroek.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23319e7a6dSDavid van Moolenbroek.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24319e7a6dSDavid van Moolenbroek.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 25319e7a6dSDavid van Moolenbroek.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26319e7a6dSDavid van Moolenbroek.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27319e7a6dSDavid van Moolenbroek.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28319e7a6dSDavid van Moolenbroek.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29319e7a6dSDavid van Moolenbroek.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30319e7a6dSDavid van Moolenbroek.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31319e7a6dSDavid van Moolenbroek.\" SUCH DAMAGE. 32319e7a6dSDavid van Moolenbroek.\" 33319e7a6dSDavid van Moolenbroek.\" from: @(#)find.1 8.7 (Berkeley) 5/9/95 34319e7a6dSDavid van Moolenbroek.\" 35*0a6a1f1dSLionel Sambuc.Dd May 17, 2014 36319e7a6dSDavid van Moolenbroek.Dt FIND 1 37319e7a6dSDavid van Moolenbroek.Os 38319e7a6dSDavid van Moolenbroek.Sh NAME 39319e7a6dSDavid van Moolenbroek.Nm find 40319e7a6dSDavid van Moolenbroek.Nd walk a file hierarchy 41319e7a6dSDavid van Moolenbroek.Sh SYNOPSIS 42319e7a6dSDavid van Moolenbroek.Nm 43319e7a6dSDavid van Moolenbroek.Op Fl H | Fl L | Fl P 44319e7a6dSDavid van Moolenbroek.Op Fl dEhsXx 45319e7a6dSDavid van Moolenbroek.Ar file 46319e7a6dSDavid van Moolenbroek.Op Ar file ... 47319e7a6dSDavid van Moolenbroek.Op Ar expression 48319e7a6dSDavid van Moolenbroek.Nm 49319e7a6dSDavid van Moolenbroek.Op Fl H | Fl L | Fl P 50319e7a6dSDavid van Moolenbroek.Op Fl dEhsXx 51319e7a6dSDavid van Moolenbroek.Fl f Ar file 52319e7a6dSDavid van Moolenbroek.Op Ar file ... 53319e7a6dSDavid van Moolenbroek.Op Ar expression 54319e7a6dSDavid van Moolenbroek.Sh DESCRIPTION 55319e7a6dSDavid van Moolenbroek.Nm 56319e7a6dSDavid van Moolenbroekrecursively descends the directory tree for each 57319e7a6dSDavid van Moolenbroek.Ar file 58319e7a6dSDavid van Moolenbroeklisted, evaluating an 59319e7a6dSDavid van Moolenbroek.Ar expression 60319e7a6dSDavid van Moolenbroek(composed of the 61319e7a6dSDavid van Moolenbroek.Dq primaries 62319e7a6dSDavid van Moolenbroekand 63319e7a6dSDavid van Moolenbroek.Dq operands 64319e7a6dSDavid van Moolenbroeklisted below) in terms 65319e7a6dSDavid van Moolenbroekof each file in the tree. 66319e7a6dSDavid van Moolenbroek.Pp 67319e7a6dSDavid van MoolenbroekThe options are as follows: 68319e7a6dSDavid van Moolenbroek.Bl -tag -width Ds 69319e7a6dSDavid van Moolenbroek.It Fl H 70319e7a6dSDavid van MoolenbroekCauses the file information and file type (see 71319e7a6dSDavid van Moolenbroek.Xr stat 2 ) 72319e7a6dSDavid van Moolenbroekreturned for each symbolic link encountered on the command line to be 73319e7a6dSDavid van Moolenbroekthose of the file referenced by the link, not the link itself. 74319e7a6dSDavid van MoolenbroekIf the referenced file does not exist, the file information and type will 75319e7a6dSDavid van Moolenbroekbe for the link itself. 76319e7a6dSDavid van MoolenbroekFile information of all symbolic links not on the command line is that 77319e7a6dSDavid van Moolenbroekof the link itself. 78319e7a6dSDavid van Moolenbroek.It Fl L 79319e7a6dSDavid van MoolenbroekCauses the file information and file type (see 80319e7a6dSDavid van Moolenbroek.Xr stat 2 ) 81319e7a6dSDavid van Moolenbroekreturned for each symbolic link to be those of the file referenced by the 82319e7a6dSDavid van Moolenbroeklink, not the link itself. 83319e7a6dSDavid van MoolenbroekIf the referenced file does not exist, the file information and type will 84319e7a6dSDavid van Moolenbroekbe for the link itself. 85319e7a6dSDavid van Moolenbroek.It Fl P 86319e7a6dSDavid van MoolenbroekCauses the file information and file type (see 87319e7a6dSDavid van Moolenbroek.Xr stat 2 ) 88319e7a6dSDavid van Moolenbroekreturned for each symbolic link to be those of the link itself. 89319e7a6dSDavid van Moolenbroek.It Fl d 90319e7a6dSDavid van MoolenbroekCauses 91319e7a6dSDavid van Moolenbroek.Nm 92319e7a6dSDavid van Moolenbroekto perform a depth-first traversal, i.e., directories 93319e7a6dSDavid van Moolenbroekare visited in post-order, and all entries in a directory will be acted 94319e7a6dSDavid van Moolenbroekon before the directory itself. 95319e7a6dSDavid van MoolenbroekBy default, 96319e7a6dSDavid van Moolenbroek.Nm 97319e7a6dSDavid van Moolenbroekvisits directories in pre-order, i.e., before their contents. 98319e7a6dSDavid van MoolenbroekNote, the default is 99319e7a6dSDavid van Moolenbroek.Ar not 100319e7a6dSDavid van Moolenbroeka breadth-first traversal. 101319e7a6dSDavid van Moolenbroek.It Fl E 102319e7a6dSDavid van MoolenbroekCauses 103319e7a6dSDavid van Moolenbroek.Ar regexp 104319e7a6dSDavid van Moolenbroekarguments to primaries to be interpreted as extended regular 105319e7a6dSDavid van Moolenbroekexpressions (see 106319e7a6dSDavid van Moolenbroek.Xr re_format 7 ) . 107319e7a6dSDavid van Moolenbroek.It Fl f 108319e7a6dSDavid van MoolenbroekSpecifies a file hierarchy for 109319e7a6dSDavid van Moolenbroek.Nm 110319e7a6dSDavid van Moolenbroekto traverse. 111319e7a6dSDavid van MoolenbroekFile hierarchies may also be specified as the operands immediately 112319e7a6dSDavid van Moolenbroekfollowing the options. 113319e7a6dSDavid van Moolenbroek.It Fl h 114319e7a6dSDavid van MoolenbroekCauses the file information and file type (see 115319e7a6dSDavid van Moolenbroek.Xr stat 2 ) 116319e7a6dSDavid van Moolenbroekreturned for each symbolic link to be those of the file referenced by the 117319e7a6dSDavid van Moolenbroeklink, not the link itself. 118319e7a6dSDavid van MoolenbroekIf the referenced file does not exist, the file information and type will 119319e7a6dSDavid van Moolenbroekbe for the link itself. 120319e7a6dSDavid van Moolenbroek.It Fl s 121319e7a6dSDavid van MoolenbroekCauses the entries of each directory to be sorted in 122319e7a6dSDavid van Moolenbroeklexicographical order. 123319e7a6dSDavid van MoolenbroekNote that the sorting is done only inside of each directory; 124319e7a6dSDavid van Moolenbroekfiles in different directories are not sorted. 125319e7a6dSDavid van MoolenbroekTherefore, 126319e7a6dSDavid van Moolenbroek.Sq Li a/b 127319e7a6dSDavid van Moolenbroekappears before 128319e7a6dSDavid van Moolenbroek.Sq Li a.b , 129319e7a6dSDavid van Moolenbroekwhich is different from 130319e7a6dSDavid van Moolenbroek.Dq Li "find ... \&| sort" 131319e7a6dSDavid van Moolenbroekorder. 132319e7a6dSDavid van Moolenbroek.It Fl X 133319e7a6dSDavid van MoolenbroekModifies the output to permit 134319e7a6dSDavid van Moolenbroek.Nm 135319e7a6dSDavid van Moolenbroekto be safely used in conjunction with 136319e7a6dSDavid van Moolenbroek.Xr xargs 1 . 137319e7a6dSDavid van MoolenbroekIf a file name contains any of the delimiting characters used by 138319e7a6dSDavid van Moolenbroek.Xr xargs 1 , 139319e7a6dSDavid van Moolenbroeka diagnostic message is displayed on standard error, and the file 140319e7a6dSDavid van Moolenbroekis skipped. 141319e7a6dSDavid van MoolenbroekThe delimiting characters include single 142319e7a6dSDavid van Moolenbroek.Pq Dq \&' 143319e7a6dSDavid van Moolenbroekand double 144319e7a6dSDavid van Moolenbroek.Pq Dq \&" 145319e7a6dSDavid van Moolenbroekquotes, backslash 146319e7a6dSDavid van Moolenbroek.Pq Dq \e , 147319e7a6dSDavid van Moolenbroekspace, tab, and newline characters. 148319e7a6dSDavid van MoolenbroekAlternatively, the 149319e7a6dSDavid van Moolenbroek.Ic -print0 150319e7a6dSDavid van Moolenbroekor 151319e7a6dSDavid van Moolenbroek.Ic -printx 152319e7a6dSDavid van Moolenbroekprimaries can be used to format the output in a way that 153319e7a6dSDavid van Moolenbroek.Xr xargs 1 154319e7a6dSDavid van Moolenbroekcan accept. 155319e7a6dSDavid van Moolenbroek.It Fl x 156319e7a6dSDavid van MoolenbroekRestricts the search to the file system containing the 157319e7a6dSDavid van Moolenbroekdirectory specified. 158319e7a6dSDavid van MoolenbroekDoes not list mount points to other file systems. 159319e7a6dSDavid van Moolenbroek.El 160319e7a6dSDavid van Moolenbroek.Sh PRIMARIES 161319e7a6dSDavid van MoolenbroekAll primaries which take a numeric argument of 162319e7a6dSDavid van Moolenbroek.Ar n 163319e7a6dSDavid van Moolenbroekallow the number to be preceded by a plus sign 164319e7a6dSDavid van Moolenbroek.Pq Dq \&+ 165319e7a6dSDavid van Moolenbroekor a minus sign 166319e7a6dSDavid van Moolenbroek.Pq Dq \- . 167319e7a6dSDavid van MoolenbroekA preceding plus sign means 168319e7a6dSDavid van Moolenbroek.Dq more than Ar n , 169319e7a6dSDavid van Moolenbroeka preceding minus sign means 170319e7a6dSDavid van Moolenbroek.Dq less than Ar n , 171319e7a6dSDavid van Moolenbroekand neither means 172319e7a6dSDavid van Moolenbroek.Dq exactly Ar n . 173319e7a6dSDavid van Moolenbroek.Pp 174319e7a6dSDavid van Moolenbroek.Bl -tag -width Ds -compact 175319e7a6dSDavid van Moolenbroek.It Ic -amin Ar n 176319e7a6dSDavid van MoolenbroekTrue if the difference between the file last access time and the time 177319e7a6dSDavid van Moolenbroek.Nm 178319e7a6dSDavid van Moolenbroekwas started, rounded up to the next full minute, is 179319e7a6dSDavid van Moolenbroek.Ar n 180319e7a6dSDavid van Moolenbroekminutes. 181319e7a6dSDavid van Moolenbroek.Pp 182319e7a6dSDavid van Moolenbroek.It Ic -anewer Ar file 183319e7a6dSDavid van MoolenbroekTrue if the current file has a more recent last access time than 184319e7a6dSDavid van Moolenbroek.Ar file . 185319e7a6dSDavid van Moolenbroek.Pp 186319e7a6dSDavid van Moolenbroek.It Ic -atime Ar n 187319e7a6dSDavid van MoolenbroekTrue if the difference between the file last access time and the time 188319e7a6dSDavid van Moolenbroek.Nm 189319e7a6dSDavid van Moolenbroekwas started, rounded up to the next full 24-hour period, is 190319e7a6dSDavid van Moolenbroek.Ar n 191319e7a6dSDavid van Moolenbroek24-hour periods. 192319e7a6dSDavid van Moolenbroek.Pp 193319e7a6dSDavid van Moolenbroek.It Ic -cmin Ar n 194319e7a6dSDavid van MoolenbroekTrue if the difference between the time of last change of file status 195319e7a6dSDavid van Moolenbroekinformation and the time 196319e7a6dSDavid van Moolenbroek.Nm 197319e7a6dSDavid van Moolenbroekwas started, rounded up to the next full minute, is 198319e7a6dSDavid van Moolenbroek.Ar n 199319e7a6dSDavid van Moolenbroekminutes. 200319e7a6dSDavid van Moolenbroek.Pp 201319e7a6dSDavid van Moolenbroek.It Ic -cnewer Ar file 202319e7a6dSDavid van MoolenbroekTrue if the current file has a more recent last change time than 203319e7a6dSDavid van Moolenbroek.Ar file . 204319e7a6dSDavid van Moolenbroek.Pp 205319e7a6dSDavid van Moolenbroek.It Ic -ctime Ar n 206319e7a6dSDavid van MoolenbroekTrue if the difference between the time of last change of file status 207319e7a6dSDavid van Moolenbroekinformation and the time 208319e7a6dSDavid van Moolenbroek.Nm 209319e7a6dSDavid van Moolenbroekwas started, rounded up to the next full 24-hour period, is 210319e7a6dSDavid van Moolenbroek.Ar n 211319e7a6dSDavid van Moolenbroek24-hour periods. 212319e7a6dSDavid van Moolenbroek.Pp 213319e7a6dSDavid van Moolenbroek.It Ic -delete 214319e7a6dSDavid van MoolenbroekDelete found files, symbolic links, and directories. 215319e7a6dSDavid van MoolenbroekAlways returns true. 216319e7a6dSDavid van MoolenbroekThis executes from the current working directory as 217319e7a6dSDavid van Moolenbroek.Nm 218319e7a6dSDavid van Moolenbroekrecurses down the tree. 219319e7a6dSDavid van MoolenbroekTo avoid deleting unexpected files, it will ignore any filenames that 220319e7a6dSDavid van Moolenbroek.Xr fts 3 221319e7a6dSDavid van Moolenbroekreturns that contain a 222319e7a6dSDavid van Moolenbroek.Dq / 223319e7a6dSDavid van Moolenbroek.Xr ( fts 3 224319e7a6dSDavid van Moolenbroekshould not return such pathnames). 225319e7a6dSDavid van MoolenbroekDepth-first traversal processing is implied by this option. 226319e7a6dSDavid van MoolenbroekThis primary can also be invoked as 227319e7a6dSDavid van Moolenbroek.Ic -rm . 228319e7a6dSDavid van Moolenbroek.Pp 229319e7a6dSDavid van Moolenbroek.It Ic -empty 230319e7a6dSDavid van MoolenbroekTrue if the current file or directory is empty. 231319e7a6dSDavid van Moolenbroek.Pp 232319e7a6dSDavid van Moolenbroek.It Ic -exec Ar utility Oo argument ... Oc Ic \&; 233319e7a6dSDavid van Moolenbroek.It Ic -exec Ar utility Oo argument ... Oc Ic {} Ic \&+ 234319e7a6dSDavid van MoolenbroekExecute the specified 235319e7a6dSDavid van Moolenbroek.Ar utility 236319e7a6dSDavid van Moolenbroekwith the specified arguments. 237319e7a6dSDavid van Moolenbroek.Pp 238319e7a6dSDavid van MoolenbroekThe list of arguments for 239319e7a6dSDavid van Moolenbroek.Ar utility 240319e7a6dSDavid van Moolenbroekis terminated by a lone semicolon 241319e7a6dSDavid van Moolenbroek.Dq Ic \&; 242319e7a6dSDavid van Moolenbroekor plus 243319e7a6dSDavid van Moolenbroek.Dq Ic \&+ 244319e7a6dSDavid van Moolenbroekcharacter as a separate parameter. 245319e7a6dSDavid van MoolenbroekThe command specified by 246319e7a6dSDavid van Moolenbroek.Ar utility 247319e7a6dSDavid van Moolenbroekwill be executed with its current working directory being the directory 248319e7a6dSDavid van Moolenbroekfrom which 249319e7a6dSDavid van Moolenbroek.Nm 250319e7a6dSDavid van Moolenbroekwas executed. 251319e7a6dSDavid van Moolenbroek.Pp 252319e7a6dSDavid van MoolenbroekIf the list of arguments is terminated by a semicolon 253319e7a6dSDavid van Moolenbroek.Pq Dq Ic \&; , 254319e7a6dSDavid van Moolenbroekthen 255319e7a6dSDavid van Moolenbroek.Ar utility 256319e7a6dSDavid van Moolenbroekis invoked once per pathname. 257319e7a6dSDavid van MoolenbroekIf 258319e7a6dSDavid van Moolenbroekthe string 259319e7a6dSDavid van Moolenbroek.Dq Ic {} 260319e7a6dSDavid van Moolenbroekappears one or more times in the utility name or arguments, 261319e7a6dSDavid van Moolenbroekthen it is replaced by the pathname of the current file 262319e7a6dSDavid van Moolenbroek(but it need not appear, in which case the pathname 263319e7a6dSDavid van Moolenbroekwill not be passed to 264319e7a6dSDavid van Moolenbroek.Ar utility ) . 265319e7a6dSDavid van MoolenbroekThe semicolon-terminated form of the 266319e7a6dSDavid van Moolenbroek.Ic -exec 267319e7a6dSDavid van Moolenbroekprimary returns true if and only if 268319e7a6dSDavid van Moolenbroek.Ar utility 269319e7a6dSDavid van Moolenbroekexits with a zero exit status. 270319e7a6dSDavid van MoolenbroekNote that the semicolon will have to be escaped on the shell command line 271319e7a6dSDavid van Moolenbroekin order to be passed as a parameter. 272319e7a6dSDavid van Moolenbroek.Pp 273319e7a6dSDavid van MoolenbroekIf the list of arguments is terminated by a plus sign 274319e7a6dSDavid van Moolenbroek.Pq Dq Ic \&+ , 275319e7a6dSDavid van Moolenbroekthen the pathnames for which the primary is evaluated are aggregated 276319e7a6dSDavid van Moolenbroekinto sets, and 277319e7a6dSDavid van Moolenbroek.Ar utility 278319e7a6dSDavid van Moolenbroekwill be invoked once per set, similar to 279319e7a6dSDavid van Moolenbroek.Xr xargs 1 . 280319e7a6dSDavid van MoolenbroekIn this case the string 281319e7a6dSDavid van Moolenbroek.Dq Ic {} 282319e7a6dSDavid van Moolenbroekmust appear, and must appear as the last item in the argument list, 283319e7a6dSDavid van Moolenbroekjust before the 284319e7a6dSDavid van Moolenbroek.Dq Ic \&+ 285319e7a6dSDavid van Moolenbroekparameter, and is replaced by the pathnames of the current set of files. 286319e7a6dSDavid van MoolenbroekEach set is limited to no more than 5,000 pathnames, 287319e7a6dSDavid van Moolenbroekand is also limited such that the total number of bytes in the argument 288319e7a6dSDavid van Moolenbroeklist does not exceed 289319e7a6dSDavid van Moolenbroek.Dv ARG_MAX . 290319e7a6dSDavid van MoolenbroekThe plus-terminated form of the 291319e7a6dSDavid van Moolenbroek.Ic -exec 292319e7a6dSDavid van Moolenbroekprimary always returns true. 293319e7a6dSDavid van MoolenbroekIf the plus-terminated form of the 294319e7a6dSDavid van Moolenbroek.Ic -exec 295319e7a6dSDavid van Moolenbroekprimary results in any invocation of 296319e7a6dSDavid van Moolenbroek.Ar utility 297319e7a6dSDavid van Moolenbroekexiting with non-zero exit status, then 298319e7a6dSDavid van Moolenbroek.Nm 299319e7a6dSDavid van Moolenbroekwill eventually exit with non-zero status as well, 300319e7a6dSDavid van Moolenbroekbut this does not cause 301319e7a6dSDavid van Moolenbroek.Nm 302319e7a6dSDavid van Moolenbroekto exit early. 303319e7a6dSDavid van Moolenbroek.Pp 304319e7a6dSDavid van Moolenbroek.It Ic -execdir Ar utility Oo argument ... Oc Ic \&; 305319e7a6dSDavid van MoolenbroekThe 306319e7a6dSDavid van Moolenbroek.Ic -execdir 307319e7a6dSDavid van Moolenbroekprimary is similar to the semicolon-terminated 308319e7a6dSDavid van Moolenbroek.Pq Dq Ic \&; 309319e7a6dSDavid van Moolenbroekvariant of the 310319e7a6dSDavid van Moolenbroek.Ic -exec 311319e7a6dSDavid van Moolenbroekprimary, with the exception that 312319e7a6dSDavid van Moolenbroek.Ar utility 313319e7a6dSDavid van Moolenbroekwill be executed from the directory that holds 314319e7a6dSDavid van Moolenbroekthe current file. 315319e7a6dSDavid van MoolenbroekOnly the base filename is substituted for the string 316319e7a6dSDavid van Moolenbroek.Dq Ic {} . 317319e7a6dSDavid van MoolenbroekSet aggregation 318319e7a6dSDavid van Moolenbroek.Pq Do Ic \&+ Dc termination 319319e7a6dSDavid van Moolenbroekis not supported. 320319e7a6dSDavid van Moolenbroek.Pp 321319e7a6dSDavid van Moolenbroek.It Ic -exit Op Ar status 322319e7a6dSDavid van MoolenbroekThis primary causes 323319e7a6dSDavid van Moolenbroek.Nm 324319e7a6dSDavid van Moolenbroekto stop traversing the file system and exit immediately, 325319e7a6dSDavid van Moolenbroekwith the specified numeric exit status. 326319e7a6dSDavid van MoolenbroekIf the 327319e7a6dSDavid van Moolenbroek.Ar status 328319e7a6dSDavid van Moolenbroekvalue is not specified, then 329319e7a6dSDavid van Moolenbroek.Nm 330319e7a6dSDavid van Moolenbroekwill exit with status zero. 331319e7a6dSDavid van MoolenbroekNote that any preceding primaries will be evaluated and acted upon 332319e7a6dSDavid van Moolenbroekbefore exiting. 333319e7a6dSDavid van Moolenbroek.Pp 334319e7a6dSDavid van Moolenbroek.It Ic -false 335319e7a6dSDavid van MoolenbroekThis primary always evaluates to false. 336319e7a6dSDavid van MoolenbroekThis can be used following a primary that caused the 337319e7a6dSDavid van Moolenbroekexpression to be true to make the expression to be false. 338319e7a6dSDavid van MoolenbroekThis can be useful after using a 339319e7a6dSDavid van Moolenbroek.Ic -fprint 340319e7a6dSDavid van Moolenbroekprimary so it can continue to the next expression (using an 341319e7a6dSDavid van Moolenbroek.Cm -or 342319e7a6dSDavid van Moolenbroekoperator, for example). 343319e7a6dSDavid van Moolenbroek.Pp 344319e7a6dSDavid van Moolenbroek.It Ic -flags Oo Fl Oc Ns Ar flags 345319e7a6dSDavid van MoolenbroekIf 346319e7a6dSDavid van Moolenbroek.Ar flags 347319e7a6dSDavid van Moolenbroekare preceded by a dash 348319e7a6dSDavid van Moolenbroek.Pq Dq Ic \- , 349319e7a6dSDavid van Moolenbroekthis primary evaluates to true 350319e7a6dSDavid van Moolenbroekif at least all of the bits in 351319e7a6dSDavid van Moolenbroek.Ar flags 352319e7a6dSDavid van Moolenbroekare set in the file's flags bits. 353319e7a6dSDavid van MoolenbroekIf 354319e7a6dSDavid van Moolenbroek.Ar flags 355319e7a6dSDavid van Moolenbroekare not preceded by a dash, this primary evaluates to true if 356319e7a6dSDavid van Moolenbroekthe bits in 357319e7a6dSDavid van Moolenbroek.Ar flags 358319e7a6dSDavid van Moolenbroekexactly match the file's flags bits. 359319e7a6dSDavid van MoolenbroekIf 360319e7a6dSDavid van Moolenbroek.Ar flags 361319e7a6dSDavid van Moolenbroekis 362319e7a6dSDavid van Moolenbroek.Dq none , 363319e7a6dSDavid van Moolenbroekfiles with no flags bits set are matched. 364319e7a6dSDavid van Moolenbroek(See 365319e7a6dSDavid van Moolenbroek.Xr chflags 1 366319e7a6dSDavid van Moolenbroekfor more information about file flags.) 367319e7a6dSDavid van Moolenbroek.Pp 368319e7a6dSDavid van Moolenbroek.It Ic -follow 369319e7a6dSDavid van MoolenbroekFollow symbolic links. 370319e7a6dSDavid van Moolenbroek.Pp 371319e7a6dSDavid van Moolenbroek.It Ic -fprint Ar filename 372319e7a6dSDavid van MoolenbroekThis primary always evaluates to true. 373319e7a6dSDavid van MoolenbroekThis creates 374319e7a6dSDavid van Moolenbroek.Ar filename 375319e7a6dSDavid van Moolenbroekor overwrites the file if it already exists. 376319e7a6dSDavid van MoolenbroekThe file is created at startup. 377319e7a6dSDavid van MoolenbroekIt writes the pathname of the current file to this file, followed 378319e7a6dSDavid van Moolenbroekby a newline character. 379319e7a6dSDavid van MoolenbroekThe file will be empty if no files are matched. 380319e7a6dSDavid van Moolenbroek.Pp 381319e7a6dSDavid van Moolenbroek.It Ic -fstype Ar type 382319e7a6dSDavid van MoolenbroekTrue if the file is contained in a file system of type 383319e7a6dSDavid van Moolenbroek.Ar type . 384319e7a6dSDavid van MoolenbroekThe 385319e7a6dSDavid van Moolenbroek.Xr sysctl 8 386319e7a6dSDavid van Moolenbroekcommand can be used to find out the types of file systems 387319e7a6dSDavid van Moolenbroekthat are available on the system: 388319e7a6dSDavid van Moolenbroek.Bd -literal -offset indent 389319e7a6dSDavid van Moolenbroeksysctl vfs.generic.fstypes 390319e7a6dSDavid van Moolenbroek.Ed 391319e7a6dSDavid van Moolenbroek.Pp 392319e7a6dSDavid van MoolenbroekIn addition, there are two pseudo-types, 393319e7a6dSDavid van Moolenbroek.Dq local 394319e7a6dSDavid van Moolenbroekand 395319e7a6dSDavid van Moolenbroek.Dq rdonly . 396319e7a6dSDavid van MoolenbroekThe former matches any file system physically mounted on the system where 397319e7a6dSDavid van Moolenbroekthe 398319e7a6dSDavid van Moolenbroek.Nm 399319e7a6dSDavid van Moolenbroekis being executed, and the latter matches any file system which is 400319e7a6dSDavid van Moolenbroekmounted read-only. 401319e7a6dSDavid van Moolenbroek.Pp 402319e7a6dSDavid van Moolenbroek.It Ic -group Ar gname 403319e7a6dSDavid van MoolenbroekTrue if the file belongs to the group 404319e7a6dSDavid van Moolenbroek.Ar gname . 405319e7a6dSDavid van MoolenbroekIf 406319e7a6dSDavid van Moolenbroek.Ar gname 407319e7a6dSDavid van Moolenbroekis numeric and there is no such group name, then 408319e7a6dSDavid van Moolenbroek.Ar gname 409319e7a6dSDavid van Moolenbroekis treated as a group id. 410319e7a6dSDavid van Moolenbroek.Pp 411319e7a6dSDavid van Moolenbroek.It Ic -iname Ar pattern 412319e7a6dSDavid van MoolenbroekTrue if the last component of the pathname being examined matches 413319e7a6dSDavid van Moolenbroek.Ar pattern 414319e7a6dSDavid van Moolenbroekin a case-insensitive manner. 415319e7a6dSDavid van MoolenbroekSpecial shell pattern matching characters 416319e7a6dSDavid van Moolenbroek.Po 417319e7a6dSDavid van Moolenbroek.Dq \&[ , 418319e7a6dSDavid van Moolenbroek.Dq \&] , 419319e7a6dSDavid van Moolenbroek.Dq \&* , 420319e7a6dSDavid van Moolenbroekand 421319e7a6dSDavid van Moolenbroek.Dq \&? 422319e7a6dSDavid van Moolenbroek.Pc 423319e7a6dSDavid van Moolenbroekmay be used as part of 424319e7a6dSDavid van Moolenbroek.Ar pattern . 425319e7a6dSDavid van MoolenbroekThese characters may be matched explicitly by escaping them with a 426319e7a6dSDavid van Moolenbroekbackslash 427319e7a6dSDavid van Moolenbroek.Pq Dq \e . 428319e7a6dSDavid van Moolenbroek.Pp 429319e7a6dSDavid van Moolenbroek.It Ic -inum Ar n 430319e7a6dSDavid van MoolenbroekTrue if the file has inode number 431319e7a6dSDavid van Moolenbroek.Ar n . 432319e7a6dSDavid van Moolenbroek.Pp 433319e7a6dSDavid van Moolenbroek.It Ic -iregex Ar regexp 434319e7a6dSDavid van MoolenbroekTrue if the path name of the current file matches the case-insensitive 435319e7a6dSDavid van Moolenbroekbasic regular expression 436319e7a6dSDavid van Moolenbroek.Pq see Xr re_format 7 437319e7a6dSDavid van Moolenbroek.Ar regexp . 438319e7a6dSDavid van MoolenbroekThis is a match on the whole path, not a search for the regular expression 439319e7a6dSDavid van Moolenbroekwithin the path. 440319e7a6dSDavid van Moolenbroek.Pp 441319e7a6dSDavid van Moolenbroek.It Ic -links Ar n 442319e7a6dSDavid van MoolenbroekTrue if the file has 443319e7a6dSDavid van Moolenbroek.Ar n 444319e7a6dSDavid van Moolenbroeklinks. 445319e7a6dSDavid van Moolenbroek.Pp 446319e7a6dSDavid van Moolenbroek.It Ic -rm 447319e7a6dSDavid van MoolenbroekThis primary is an alias for 448319e7a6dSDavid van Moolenbroek.Ic -delete . 449319e7a6dSDavid van Moolenbroek.Pp 450319e7a6dSDavid van Moolenbroek.It Ic -ls 451319e7a6dSDavid van MoolenbroekThis primary always evaluates to true. 452319e7a6dSDavid van MoolenbroekThe following information for the current file is written to standard output: 453319e7a6dSDavid van Moolenbroekits inode number, size in 512-byte blocks, file permissions, number of hard 454319e7a6dSDavid van Moolenbroeklinks, owner, group, size in bytes, last modification time, and pathname. 455319e7a6dSDavid van MoolenbroekIf the file is a block or character special file, the major and minor numbers 456319e7a6dSDavid van Moolenbroekwill be displayed instead of the size in bytes. 457319e7a6dSDavid van MoolenbroekIf the file is a symbolic link, the pathname of the linked-to file will be 458319e7a6dSDavid van Moolenbroekdisplayed preceded by 459319e7a6dSDavid van Moolenbroek.Dq -\*[Gt] . 460319e7a6dSDavid van MoolenbroekThe format is identical to that produced by 461319e7a6dSDavid van Moolenbroek.Dq ls -dgils . 462319e7a6dSDavid van Moolenbroek.Pp 463319e7a6dSDavid van Moolenbroek.It Ic -maxdepth Ar n 464319e7a6dSDavid van MoolenbroekTrue if the current search depth is less than or equal to what is specified in 465319e7a6dSDavid van Moolenbroek.Ar n . 466319e7a6dSDavid van Moolenbroek.Pp 467319e7a6dSDavid van Moolenbroek.It Ic -mindepth Ar n 468319e7a6dSDavid van MoolenbroekTrue if the current search depth is at least what is specified in 469319e7a6dSDavid van Moolenbroek.Ar n . 470319e7a6dSDavid van Moolenbroek.Pp 471319e7a6dSDavid van Moolenbroek.It Ic -mmin Ar n 472319e7a6dSDavid van MoolenbroekTrue if the difference between the file last modification time and the time 473319e7a6dSDavid van Moolenbroek.Nm 474319e7a6dSDavid van Moolenbroekwas started, rounded up to the next full minute, is 475319e7a6dSDavid van Moolenbroek.Ar n 476319e7a6dSDavid van Moolenbroekminutes. 477319e7a6dSDavid van Moolenbroek.Pp 478319e7a6dSDavid van Moolenbroek.It Ic -mtime Ar n 479319e7a6dSDavid van MoolenbroekTrue if the difference between the file last modification time and the time 480319e7a6dSDavid van Moolenbroek.Nm 481319e7a6dSDavid van Moolenbroekwas started, rounded up to the next full 24-hour period, is 482319e7a6dSDavid van Moolenbroek.Ar n 483319e7a6dSDavid van Moolenbroek24-hour periods. 484319e7a6dSDavid van Moolenbroek.Pp 485319e7a6dSDavid van Moolenbroek.It Ic -ok Ar utility Oo argument ... Oc Ic \&; 486319e7a6dSDavid van MoolenbroekThe 487319e7a6dSDavid van Moolenbroek.Ic -ok 488319e7a6dSDavid van Moolenbroekprimary is similar to the semicolon-terminated 489319e7a6dSDavid van Moolenbroek.Pq Dq \&; 490319e7a6dSDavid van Moolenbroekvariant of the 491319e7a6dSDavid van Moolenbroek.Ic -exec 492319e7a6dSDavid van Moolenbroekprimary, with the exception that 493319e7a6dSDavid van Moolenbroek.Nm 494319e7a6dSDavid van Moolenbroekrequests user affirmation for the execution of 495319e7a6dSDavid van Moolenbroek.Ar utility 496319e7a6dSDavid van Moolenbroekby printing 497319e7a6dSDavid van Moolenbroeka message to the terminal and reading a response. 498319e7a6dSDavid van MoolenbroekIf the response is other than 499319e7a6dSDavid van Moolenbroek.Dq y , 500319e7a6dSDavid van Moolenbroekthe command is not executed and the 501319e7a6dSDavid van Moolenbroek.Ic -ok 502319e7a6dSDavid van Moolenbroekprimary evaluates to false. 503319e7a6dSDavid van MoolenbroekSet aggregation 504319e7a6dSDavid van Moolenbroek.Pq Do \&+ Dc termination 505319e7a6dSDavid van Moolenbroekis not supported. 506319e7a6dSDavid van Moolenbroek.Pp 507319e7a6dSDavid van Moolenbroek.It Ic -name Ar pattern 508319e7a6dSDavid van MoolenbroekTrue if the last component of the pathname being examined matches 509319e7a6dSDavid van Moolenbroek.Ar pattern . 510319e7a6dSDavid van MoolenbroekSpecial shell pattern matching characters 511319e7a6dSDavid van Moolenbroek.Po 512319e7a6dSDavid van Moolenbroek.Dq \&[ , 513319e7a6dSDavid van Moolenbroek.Dq \&] , 514319e7a6dSDavid van Moolenbroek.Dq \&* , 515319e7a6dSDavid van Moolenbroekand 516319e7a6dSDavid van Moolenbroek.Dq \&? 517319e7a6dSDavid van Moolenbroek.Pc 518319e7a6dSDavid van Moolenbroekmay be used as part of 519319e7a6dSDavid van Moolenbroek.Ar pattern . 520319e7a6dSDavid van MoolenbroekThese characters may be matched explicitly by escaping them with a 521319e7a6dSDavid van Moolenbroekbackslash 522319e7a6dSDavid van Moolenbroek.Pq Dq \e . 523319e7a6dSDavid van Moolenbroek.Pp 524319e7a6dSDavid van Moolenbroek.It Ic -newer Ar file 525319e7a6dSDavid van MoolenbroekTrue if the current file has a more recent last modification time than 526319e7a6dSDavid van Moolenbroek.Ar file . 527319e7a6dSDavid van Moolenbroek.Pp 528319e7a6dSDavid van Moolenbroek.It Ic -nouser 529319e7a6dSDavid van MoolenbroekTrue if the file belongs to an unknown user. 530319e7a6dSDavid van Moolenbroek.Pp 531319e7a6dSDavid van Moolenbroek.It Ic -nogroup 532319e7a6dSDavid van MoolenbroekTrue if the file belongs to an unknown group. 533319e7a6dSDavid van Moolenbroek.Pp 534319e7a6dSDavid van Moolenbroek.It Ic -path Ar pattern 535319e7a6dSDavid van MoolenbroekTrue if the pathname being examined matches 536319e7a6dSDavid van Moolenbroek.Ar pattern . 537319e7a6dSDavid van MoolenbroekSpecial shell pattern matching characters 538319e7a6dSDavid van Moolenbroek.Po 539319e7a6dSDavid van Moolenbroek.Dq \&[ , 540319e7a6dSDavid van Moolenbroek.Dq \&] , 541319e7a6dSDavid van Moolenbroek.Dq \&* , 542319e7a6dSDavid van Moolenbroekand 543319e7a6dSDavid van Moolenbroek.Dq \&? 544319e7a6dSDavid van Moolenbroek.Pc 545319e7a6dSDavid van Moolenbroekmay be used as part of 546319e7a6dSDavid van Moolenbroek.Ar pattern . 547319e7a6dSDavid van MoolenbroekThese characters may be matched explicitly by escaping them with a 548319e7a6dSDavid van Moolenbroekbackslash 549319e7a6dSDavid van Moolenbroek.Pq Dq \e . 550319e7a6dSDavid van MoolenbroekSlashes 551319e7a6dSDavid van Moolenbroek.Pq Dq / 552319e7a6dSDavid van Moolenbroekare treated as normal characters and do not have to be 553319e7a6dSDavid van Moolenbroekmatched explicitly. 554319e7a6dSDavid van Moolenbroek.Pp 555319e7a6dSDavid van Moolenbroek.It Ic -perm Oo Fl Oc Ns Ar mode 556319e7a6dSDavid van MoolenbroekThe 557319e7a6dSDavid van Moolenbroek.Ar mode 558319e7a6dSDavid van Moolenbroekmay be either symbolic (see 559319e7a6dSDavid van Moolenbroek.Xr chmod 1 ) 560319e7a6dSDavid van Moolenbroekor an octal number. 561319e7a6dSDavid van MoolenbroekIf the mode is symbolic, a starting value of zero is assumed and the 562319e7a6dSDavid van Moolenbroekmode sets or clears permissions without regard to the process' file mode 563319e7a6dSDavid van Moolenbroekcreation mask. 564319e7a6dSDavid van MoolenbroekIf the mode is octal, only bits 07777 565319e7a6dSDavid van Moolenbroek.Pf ( Dv S_ISUID 566319e7a6dSDavid van Moolenbroek| 567319e7a6dSDavid van Moolenbroek.Dv S_ISGID 568319e7a6dSDavid van Moolenbroek| 569319e7a6dSDavid van Moolenbroek.Dv S_ISTXT 570319e7a6dSDavid van Moolenbroek| 571319e7a6dSDavid van Moolenbroek.Dv S_IRWXU 572319e7a6dSDavid van Moolenbroek| 573319e7a6dSDavid van Moolenbroek.Dv S_IRWXG 574319e7a6dSDavid van Moolenbroek| 575319e7a6dSDavid van Moolenbroek.Dv S_IRWXO ) 576319e7a6dSDavid van Moolenbroekof the file's mode bits participate 577319e7a6dSDavid van Moolenbroekin the comparison. 578319e7a6dSDavid van MoolenbroekIf the mode is preceded by a dash 579319e7a6dSDavid van Moolenbroek.Pq Dq Ic \- , 580319e7a6dSDavid van Moolenbroekthis primary evaluates to true 581319e7a6dSDavid van Moolenbroekif at least all of the bits in the mode are set in the file's mode bits. 582319e7a6dSDavid van MoolenbroekIf the mode is not preceded by a dash, this primary evaluates to true if 583319e7a6dSDavid van Moolenbroekthe bits in the mode exactly match the file's mode bits. 584319e7a6dSDavid van MoolenbroekNote, the first character of a symbolic mode may not be a dash 585319e7a6dSDavid van Moolenbroek.Pq Dq Ic \- . 586319e7a6dSDavid van Moolenbroek.Pp 587319e7a6dSDavid van Moolenbroek.It Ic -print 588319e7a6dSDavid van MoolenbroekThis primary always evaluates to true. 589319e7a6dSDavid van MoolenbroekIt prints the pathname of the current file to standard output, followed 590319e7a6dSDavid van Moolenbroekby a newline character. 591319e7a6dSDavid van MoolenbroekIf none of 592319e7a6dSDavid van Moolenbroek.Ic -delete , 593319e7a6dSDavid van Moolenbroek.Ic -exec , 594319e7a6dSDavid van Moolenbroek.Ic -execdir , 595319e7a6dSDavid van Moolenbroek.Ic -exit , 596319e7a6dSDavid van Moolenbroek.Ic -fprint , 597319e7a6dSDavid van Moolenbroek.Ic -ls , 598319e7a6dSDavid van Moolenbroek.Ic -ok , 599319e7a6dSDavid van Moolenbroek.Ic -print0 , 600319e7a6dSDavid van Moolenbroek.Ic -printx , 601319e7a6dSDavid van Moolenbroeknor 602319e7a6dSDavid van Moolenbroek.Ic -rm 603319e7a6dSDavid van Moolenbroekis specified, the given expression shall be effectively replaced by 604319e7a6dSDavid van Moolenbroek.Cm \&( Ns Ar given\& expression Ns Cm \&) 605319e7a6dSDavid van Moolenbroek.Ic -print . 606319e7a6dSDavid van Moolenbroek.Pp 607319e7a6dSDavid van Moolenbroek.It Ic -print0 608319e7a6dSDavid van MoolenbroekThis primary always evaluates to true. 609319e7a6dSDavid van MoolenbroekIt prints the pathname of the current file to standard output, followed 610319e7a6dSDavid van Moolenbroekby a NUL character. 611319e7a6dSDavid van Moolenbroek.Pp 612319e7a6dSDavid van Moolenbroek.It Ic -printx 613319e7a6dSDavid van MoolenbroekThis primary always evaluates to true. 614319e7a6dSDavid van MoolenbroekIt prints the pathname of the current file to standard output, 615319e7a6dSDavid van Moolenbroekwith each space, tab, newline, backslash, dollar sign, and single, 616319e7a6dSDavid van Moolenbroekdouble, or back quotation mark prefixed by a backslash, so the output of 617319e7a6dSDavid van Moolenbroek.Nm 618319e7a6dSDavid van Moolenbroekcan safely be used as input to 619319e7a6dSDavid van Moolenbroek.Xr xargs 1 . 620319e7a6dSDavid van Moolenbroek.Pp 621319e7a6dSDavid van Moolenbroek.It Ic -prune 622319e7a6dSDavid van MoolenbroekThis primary always evaluates to true. 623319e7a6dSDavid van MoolenbroekIt causes 624319e7a6dSDavid van Moolenbroek.Nm 625319e7a6dSDavid van Moolenbroekto not descend into the current file. 626319e7a6dSDavid van MoolenbroekNote, the 627319e7a6dSDavid van Moolenbroek.Ic -prune 628319e7a6dSDavid van Moolenbroekprimary has no effect if the 629319e7a6dSDavid van Moolenbroek.Fl d 630319e7a6dSDavid van Moolenbroekoption was specified. 631319e7a6dSDavid van Moolenbroek.Pp 632319e7a6dSDavid van Moolenbroek.It Ic -regex Ar regexp 633319e7a6dSDavid van MoolenbroekTrue if the path name of the current file matches the case-sensitive 634319e7a6dSDavid van Moolenbroekbasic regular expression 635319e7a6dSDavid van Moolenbroek.Pq see Xr re_format 7 636319e7a6dSDavid van Moolenbroek.Ar regexp . 637319e7a6dSDavid van MoolenbroekThis is a match on the whole path, not a search for the regular expression 638319e7a6dSDavid van Moolenbroekwithin the path. 639319e7a6dSDavid van Moolenbroek.Pp 640319e7a6dSDavid van Moolenbroek.It Ic -size Ar n Ns Op Cm c 641319e7a6dSDavid van MoolenbroekTrue if the file's size, rounded up, in 512-byte blocks is 642319e7a6dSDavid van Moolenbroek.Ar n . 643319e7a6dSDavid van MoolenbroekIf 644319e7a6dSDavid van Moolenbroek.Ar n 645319e7a6dSDavid van Moolenbroekis followed by a 646319e7a6dSDavid van Moolenbroek.Dq Ic c , 647319e7a6dSDavid van Moolenbroekthen the primary is true if the file's size is 648319e7a6dSDavid van Moolenbroek.Ar n 649319e7a6dSDavid van Moolenbroekbytes. 650319e7a6dSDavid van Moolenbroek.Pp 651319e7a6dSDavid van Moolenbroek.It Ic -type Ar t 652319e7a6dSDavid van MoolenbroekTrue if the file is of the specified type. 653319e7a6dSDavid van MoolenbroekPossible file types are as follows: 654319e7a6dSDavid van Moolenbroek.Pp 655319e7a6dSDavid van Moolenbroek.Bl -tag -width flag -offset indent -compact 656319e7a6dSDavid van Moolenbroek.It Cm b 657319e7a6dSDavid van Moolenbroekblock special 658319e7a6dSDavid van Moolenbroek.It Cm c 659319e7a6dSDavid van Moolenbroekcharacter special 660319e7a6dSDavid van Moolenbroek.It Cm d 661319e7a6dSDavid van Moolenbroekdirectory 662319e7a6dSDavid van Moolenbroek.It Cm f 663319e7a6dSDavid van Moolenbroekregular file 664319e7a6dSDavid van Moolenbroek.It Cm l 665319e7a6dSDavid van Moolenbroeksymbolic link 666319e7a6dSDavid van Moolenbroek.It Cm p 667319e7a6dSDavid van MoolenbroekFIFO 668319e7a6dSDavid van Moolenbroek.It Cm s 669319e7a6dSDavid van Moolenbroeksocket 670319e7a6dSDavid van Moolenbroek.It Cm W 671319e7a6dSDavid van Moolenbroekwhiteout 672319e7a6dSDavid van Moolenbroek.It Cm w 673319e7a6dSDavid van Moolenbroekwhiteout 674319e7a6dSDavid van Moolenbroek.El 675319e7a6dSDavid van Moolenbroek.Pp 676319e7a6dSDavid van Moolenbroek.It Ic -user Ar uname 677319e7a6dSDavid van MoolenbroekTrue if the file belongs to the user 678319e7a6dSDavid van Moolenbroek.Ar uname . 679319e7a6dSDavid van MoolenbroekIf 680319e7a6dSDavid van Moolenbroek.Ar uname 681319e7a6dSDavid van Moolenbroekis numeric and there is no such user name, then 682319e7a6dSDavid van Moolenbroek.Ar uname 683319e7a6dSDavid van Moolenbroekis treated as a user id (and considered a numeric argument). 684319e7a6dSDavid van Moolenbroek.Pp 685319e7a6dSDavid van Moolenbroek.It Ic -xdev 686319e7a6dSDavid van MoolenbroekThis primary always evaluates to true. 687319e7a6dSDavid van MoolenbroekIt causes find not to descend past directories that have a different 688319e7a6dSDavid van Moolenbroekdevice ID 689319e7a6dSDavid van Moolenbroek.Va ( st_dev , 690319e7a6dSDavid van Moolenbroeksee 691319e7a6dSDavid van Moolenbroek.Xr stat 2 692319e7a6dSDavid van MoolenbroekS5.6.2 [POSIX.1]). 693319e7a6dSDavid van Moolenbroek.El 694319e7a6dSDavid van Moolenbroek.Sh OPERATORS 695319e7a6dSDavid van MoolenbroekThe primaries may be combined using the following operators. 696319e7a6dSDavid van MoolenbroekThe operators are listed in order of decreasing precedence. 697319e7a6dSDavid van Moolenbroek.Bl -tag -width (expression) 698319e7a6dSDavid van Moolenbroek.It Cm \&( Ar expression Cm \&) 699319e7a6dSDavid van MoolenbroekThis evaluates to true if the parenthesized expression evaluates to 700319e7a6dSDavid van Moolenbroektrue. 701319e7a6dSDavid van Moolenbroek.It Cm \&! Ar expression 702319e7a6dSDavid van MoolenbroekThis is the unary 703319e7a6dSDavid van Moolenbroek.Tn NOT 704319e7a6dSDavid van Moolenbroekoperator. 705319e7a6dSDavid van MoolenbroekIt evaluates to true if the expression is false. 706319e7a6dSDavid van Moolenbroek.It Ar expression Cm -and Ar expression 707319e7a6dSDavid van Moolenbroek.It Ar expression expression 708319e7a6dSDavid van MoolenbroekThe 709319e7a6dSDavid van Moolenbroek.Cm -and 710319e7a6dSDavid van Moolenbroekoperator is the logical 711319e7a6dSDavid van Moolenbroek.Tn AND 712319e7a6dSDavid van Moolenbroekoperator. 713319e7a6dSDavid van MoolenbroekAs it is implied by the juxtaposition of two expressions it does not 714319e7a6dSDavid van Moolenbroekhave to be specified. 715319e7a6dSDavid van MoolenbroekThe expression evaluates to true if both expressions are true. 716319e7a6dSDavid van MoolenbroekThe second expression is not evaluated if the first expression is false. 717319e7a6dSDavid van Moolenbroek.It Ar expression Cm -or Ar expression 718319e7a6dSDavid van MoolenbroekThe 719319e7a6dSDavid van Moolenbroek.Cm -or 720319e7a6dSDavid van Moolenbroekoperator is the logical 721319e7a6dSDavid van Moolenbroek.Tn OR 722319e7a6dSDavid van Moolenbroekoperator. 723319e7a6dSDavid van MoolenbroekThe expression evaluates to true if either the first or the second expression 724319e7a6dSDavid van Moolenbroekis true. 725319e7a6dSDavid van MoolenbroekThe second expression is not evaluated if the first expression is true. 726319e7a6dSDavid van Moolenbroek.El 727319e7a6dSDavid van Moolenbroek.Pp 728319e7a6dSDavid van MoolenbroekAll operands and primaries must be separate arguments to 729319e7a6dSDavid van Moolenbroek.Nm . 730319e7a6dSDavid van MoolenbroekPrimaries which themselves take arguments expect each argument 731319e7a6dSDavid van Moolenbroekto be a separate argument to 732319e7a6dSDavid van Moolenbroek.Nm . 733319e7a6dSDavid van Moolenbroek.Sh EXIT STATUS 734319e7a6dSDavid van MoolenbroekThe 735319e7a6dSDavid van Moolenbroek.Nm 736319e7a6dSDavid van Moolenbroekutility normally exits 0 on success, and exits with 1 under certain 737319e7a6dSDavid van Moolenbroekinternal error conditions. 738319e7a6dSDavid van MoolenbroekIf any invocations of 739319e7a6dSDavid van Moolenbroek.Dq Ic -exec Ar ... Ic \&+ 740319e7a6dSDavid van Moolenbroekprimaries return non-zero exit-status, then 741319e7a6dSDavid van Moolenbroek.Nm 742319e7a6dSDavid van Moolenbroekwill do so as well. 743319e7a6dSDavid van Moolenbroek.Sh EXAMPLES 744319e7a6dSDavid van MoolenbroekThe following examples are shown as given to the shell: 745319e7a6dSDavid van Moolenbroek.Bl -tag -width findx 746319e7a6dSDavid van Moolenbroek.It Li "find / \e! -name \*q*.c\*q \-print" 747319e7a6dSDavid van MoolenbroekPrint out a list of all the files whose names do not end in 748319e7a6dSDavid van Moolenbroek.Dq \&.c . 749319e7a6dSDavid van Moolenbroek.It Li "find / \-newer ttt \-user wnj \-print" 750319e7a6dSDavid van MoolenbroekPrint out a list of all the files owned by user 751319e7a6dSDavid van Moolenbroek.Dq wnj 752319e7a6dSDavid van Moolenbroekthat are newer than the file 753319e7a6dSDavid van Moolenbroek.Dq ttt . 754319e7a6dSDavid van Moolenbroek.It Li "find . \-type f \-mmin \-30 \-print \-or \-mindepth 1 \-prune" 755319e7a6dSDavid van MoolenbroekPrint out a list of all the files in the current directory that are 756319e7a6dSDavid van Moolenbroeknewer than 30 minutes. 757319e7a6dSDavid van Moolenbroek.It Li "find . \-type f \-atime +10 \-mindepth 2 \-print" 758319e7a6dSDavid van MoolenbroekPrint out a list of all the files in any sub-directories that have not 759319e7a6dSDavid van Moolenbroekbeen accessed in the past ten days. 760319e7a6dSDavid van Moolenbroek.It Li "find . \-mtime +90 \-exec rm \-i {} + \-or \-mindepth 1 \-prune" 761319e7a6dSDavid van MoolenbroekInteractively remove all of the files in the current directory that have 762319e7a6dSDavid van Moolenbroeknot been modified in 90 days. 763319e7a6dSDavid van Moolenbroek.It Li "find . \-type f \-mtime +90 \-ok mv {} {}.old \e;" 764319e7a6dSDavid van MoolenbroekInteractively rename all of the files in the current directory and all 765319e7a6dSDavid van Moolenbroeksub-directories that have not been modified in 90 days. 766319e7a6dSDavid van Moolenbroek.It Li "find / \e! \e( \-newer ttt \-user wnj \e) \-print" 767319e7a6dSDavid van MoolenbroekPrint out a list of all the files which are not both newer than 768319e7a6dSDavid van Moolenbroek.Dq ttt 769319e7a6dSDavid van Moolenbroekand owned by 770319e7a6dSDavid van Moolenbroek.Dq wnj . 771319e7a6dSDavid van Moolenbroek.It Li "find / \e( \-newer ttt \-or \-user wnj \e) \-print" 772319e7a6dSDavid van MoolenbroekPrint out a list of all the files that are either owned by 773319e7a6dSDavid van Moolenbroek.Dq wnj 774319e7a6dSDavid van Moolenbroekor that are newer than 775319e7a6dSDavid van Moolenbroek.Dq ttt . 776319e7a6dSDavid van Moolenbroek.It Li "find / \e( \-newer ttt \-or \-user wnj \e) \-exit 1" 777319e7a6dSDavid van MoolenbroekReturn immediately with a value of 1 if any files are found that are either 778319e7a6dSDavid van Moolenbroekowned by 779319e7a6dSDavid van Moolenbroek.Dq wnj 780319e7a6dSDavid van Moolenbroekor that are newer than 781319e7a6dSDavid van Moolenbroek.Dq ttt , 782319e7a6dSDavid van Moolenbroekbut do not print them. 783319e7a6dSDavid van Moolenbroek.It Li "find / \e( \-newer ttt \-or \-user wnj \e) \-ls \-exit 1" 784319e7a6dSDavid van MoolenbroekSame as above, but list the first file matching the criteria before exiting 785319e7a6dSDavid van Moolenbroekwith a value of 1. 786*0a6a1f1dSLionel Sambuc.It Li "find . \-type f \-exec sh \-c 'file=\*[q]$1\*[q]; ...;' - {} \;" 787*0a6a1f1dSLionel SambucPerform an arbitrarily complex shell command for every file. 788319e7a6dSDavid van Moolenbroek.El 789319e7a6dSDavid van Moolenbroek.Sh SEE ALSO 790319e7a6dSDavid van Moolenbroek.Xr chflags 1 , 791319e7a6dSDavid van Moolenbroek.Xr chmod 1 , 792319e7a6dSDavid van Moolenbroek.Xr locate 1 , 793319e7a6dSDavid van Moolenbroek.Xr xargs 1 , 794319e7a6dSDavid van Moolenbroek.Xr stat 2 , 795319e7a6dSDavid van Moolenbroek.Xr fts 3 , 796319e7a6dSDavid van Moolenbroek.Xr getgrent 3 , 797319e7a6dSDavid van Moolenbroek.Xr getpwent 3 , 798319e7a6dSDavid van Moolenbroek.Xr strmode 3 , 799319e7a6dSDavid van Moolenbroek.Xr re_format 7 , 800319e7a6dSDavid van Moolenbroek.Xr symlink 7 , 801319e7a6dSDavid van Moolenbroek.Xr sysctl 8 802319e7a6dSDavid van Moolenbroek.Sh STANDARDS 803319e7a6dSDavid van MoolenbroekThe 804319e7a6dSDavid van Moolenbroek.Nm 805319e7a6dSDavid van Moolenbroekutility syntax is a superset of the syntax specified by the 806319e7a6dSDavid van Moolenbroek.St -p1003.2 807319e7a6dSDavid van Moolenbroekstandard. 808319e7a6dSDavid van Moolenbroek.Pp 809319e7a6dSDavid van MoolenbroekThe options and the 810319e7a6dSDavid van Moolenbroek.Ic -amin , 811319e7a6dSDavid van Moolenbroek.Ic -anewer , 812319e7a6dSDavid van Moolenbroek.Ic -cmin , 813319e7a6dSDavid van Moolenbroek.Ic -cnewer , 814319e7a6dSDavid van Moolenbroek.Ic -delete , 815319e7a6dSDavid van Moolenbroek.Ic -empty , 816319e7a6dSDavid van Moolenbroek.Ic -execdir , 817319e7a6dSDavid van Moolenbroek.Ic -follow , 818319e7a6dSDavid van Moolenbroek.Ic -fstype , 819319e7a6dSDavid van Moolenbroek.Ic -iname , 820319e7a6dSDavid van Moolenbroek.Ic -inum , 821319e7a6dSDavid van Moolenbroek.Ic -iregex , 822319e7a6dSDavid van Moolenbroek.Ic -links , 823319e7a6dSDavid van Moolenbroek.Ic -ls , 824319e7a6dSDavid van Moolenbroek.Ic -maxdepth , 825319e7a6dSDavid van Moolenbroek.Ic -mindepth , 826319e7a6dSDavid van Moolenbroek.Ic -mmin , 827319e7a6dSDavid van Moolenbroek.Ic -path , 828319e7a6dSDavid van Moolenbroek.Ic -print0 , 829319e7a6dSDavid van Moolenbroek.Ic -printx , 830319e7a6dSDavid van Moolenbroek.Ic -regex , 831319e7a6dSDavid van Moolenbroekand 832319e7a6dSDavid van Moolenbroek.Ic -rm 833319e7a6dSDavid van Moolenbroekprimaries are extensions to 834319e7a6dSDavid van Moolenbroek.St -p1003.2 . 835319e7a6dSDavid van Moolenbroek.Pp 836319e7a6dSDavid van MoolenbroekHistorically, the 837319e7a6dSDavid van Moolenbroek.Fl d , 838319e7a6dSDavid van Moolenbroek.Fl h , 839319e7a6dSDavid van Moolenbroekand 840319e7a6dSDavid van Moolenbroek.Fl x 841319e7a6dSDavid van Moolenbroekoptions were implemented using the primaries 842319e7a6dSDavid van Moolenbroek.Dq Ic -depth , 843319e7a6dSDavid van Moolenbroek.Dq Ic -follow , 844319e7a6dSDavid van Moolenbroekand 845319e7a6dSDavid van Moolenbroek.Dq Ic -xdev . 846319e7a6dSDavid van MoolenbroekThese primaries always evaluated to true, and always 847319e7a6dSDavid van Moolenbroektook effect when the 848319e7a6dSDavid van Moolenbroek.Ar expression 849319e7a6dSDavid van Moolenbroekwas parsed, before the file system traversal began. 850319e7a6dSDavid van MoolenbroekAs a result, some legal expressions could be confusing. 851319e7a6dSDavid van MoolenbroekFor example, in the expression 852319e7a6dSDavid van Moolenbroek.Dq Ic -print Ic -or Ic -depth , 853319e7a6dSDavid van Moolenbroek.Ic -print 854319e7a6dSDavid van Moolenbroekalways evaluates to true, so the standard meaning of 855319e7a6dSDavid van Moolenbroek.Ic -or 856319e7a6dSDavid van Moolenbroekimplies that 857319e7a6dSDavid van Moolenbroek.Ic -depth 858319e7a6dSDavid van Moolenbroekwould never be evaluated, but that is not what happens; 859319e7a6dSDavid van Moolenbroekin fact, 860319e7a6dSDavid van Moolenbroek.Ic -depth 861319e7a6dSDavid van Moolenbroektakes effect immediately, without testing whether 862319e7a6dSDavid van Moolenbroek.Ic -print 863319e7a6dSDavid van Moolenbroekreturns true or false. 864319e7a6dSDavid van Moolenbroek.Pp 865319e7a6dSDavid van MoolenbroekHistorically, the operator 866319e7a6dSDavid van Moolenbroek.Dq Ic -or 867319e7a6dSDavid van Moolenbroekwas implemented as 868319e7a6dSDavid van Moolenbroek.Dq Ic -o , 869319e7a6dSDavid van Moolenbroekand the operator 870319e7a6dSDavid van Moolenbroek.Dq Ic -and 871319e7a6dSDavid van Moolenbroekwas implemented as 872319e7a6dSDavid van Moolenbroek.Dq Ic -a . 873319e7a6dSDavid van Moolenbroek.Pp 874319e7a6dSDavid van MoolenbroekHistoric implementations of the 875319e7a6dSDavid van Moolenbroek.Dq Ic -exec 876319e7a6dSDavid van Moolenbroekand 877319e7a6dSDavid van Moolenbroek.Dq Ic -ok 878319e7a6dSDavid van Moolenbroekprimaries did not replace the string 879319e7a6dSDavid van Moolenbroek.Dq Ic {} 880319e7a6dSDavid van Moolenbroekin the utility name or the 881319e7a6dSDavid van Moolenbroekutility arguments if it did not appear as a separate argument. 882319e7a6dSDavid van MoolenbroekThis version replaces it no matter where in the utility name or arguments 883319e7a6dSDavid van Moolenbroekit appears. 884319e7a6dSDavid van Moolenbroek.Pp 885319e7a6dSDavid van MoolenbroekSupport for 886319e7a6dSDavid van Moolenbroek.Dq Ic -exec Ar ... Ic \&+ 887319e7a6dSDavid van Moolenbroekis consistent with 888319e7a6dSDavid van Moolenbroek.Em IEEE PASC Interpretation 1003.2 #210 , 889319e7a6dSDavid van Moolenbroekthough the feature originated in 890319e7a6dSDavid van Moolenbroek.Tn SVR4 . 891319e7a6dSDavid van Moolenbroek.Pp 892319e7a6dSDavid van MoolenbroekThe 893319e7a6dSDavid van Moolenbroek.Ic -delete 894319e7a6dSDavid van Moolenbroekprimary does not interact well with other options that cause the file system 895319e7a6dSDavid van Moolenbroektree traversal options to be changed. 896319e7a6dSDavid van Moolenbroek.Sh HISTORY 897319e7a6dSDavid van MoolenbroekA much simpler 898319e7a6dSDavid van Moolenbroek.Nm 899319e7a6dSDavid van Moolenbroekcommand appeared in First Edition AT\*[Am]T Unix. 900319e7a6dSDavid van MoolenbroekThe syntax had become similar to the present version by 901319e7a6dSDavid van Moolenbroekthe time of the Fifth Edition. 902319e7a6dSDavid van Moolenbroek.Sh BUGS 903319e7a6dSDavid van MoolenbroekThe special characters used by 904319e7a6dSDavid van Moolenbroek.Nm 905319e7a6dSDavid van Moolenbroekare also special characters to many shell programs. 906319e7a6dSDavid van MoolenbroekIn particular, the characters 907319e7a6dSDavid van Moolenbroek.Dq \&* , 908319e7a6dSDavid van Moolenbroek.Dq \&[ , 909319e7a6dSDavid van Moolenbroek.Dq \&] , 910319e7a6dSDavid van Moolenbroek.Dq \&? , 911319e7a6dSDavid van Moolenbroek.Dq \&( , 912319e7a6dSDavid van Moolenbroek.Dq \&) , 913319e7a6dSDavid van Moolenbroek.Dq \&! , 914319e7a6dSDavid van Moolenbroek.Dq \e , 915319e7a6dSDavid van Moolenbroekand 916319e7a6dSDavid van Moolenbroek.Dq \&; 917319e7a6dSDavid van Moolenbroekmay have to be escaped from the shell. 918319e7a6dSDavid van Moolenbroek.Pp 919319e7a6dSDavid van MoolenbroekAs there is no delimiter separating options and file names or file 920319e7a6dSDavid van Moolenbroeknames and the 921319e7a6dSDavid van Moolenbroek.Ar expression , 922319e7a6dSDavid van Moolenbroekit is difficult to specify files named 923319e7a6dSDavid van Moolenbroek.Dq -xdev 924319e7a6dSDavid van Moolenbroekor 925319e7a6dSDavid van Moolenbroek.Dq \&! . 926319e7a6dSDavid van MoolenbroekThese problems are handled by the 927319e7a6dSDavid van Moolenbroek.Fl f 928319e7a6dSDavid van Moolenbroekoption and the 929319e7a6dSDavid van Moolenbroek.Xr getopt 3 930319e7a6dSDavid van Moolenbroek.Dq -- 931319e7a6dSDavid van Moolenbroekconstruct. 932