xref: /minix3/usr.bin/find/find.1 (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
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