xref: /freebsd/usr.bin/find/find.1 (revision 2357939bc239bd5334a169b62313806178dd8f30)
1.\"	The Regents of the University of California.  All rights reserved.
2.\"
3.\" This code is derived from software contributed to Berkeley by
4.\" the Institute of Electrical and Electronics Engineers, Inc.
5.\"
6.\" Redistribution and use in source and binary forms, with or without
7.\" modification, are permitted provided that the following conditions
8.\" are met:
9.\" 1. Redistributions of source code must retain the above copyright
10.\"    notice, this list of conditions and the following disclaimer.
11.\" 2. Redistributions in binary form must reproduce the above copyright
12.\"    notice, this list of conditions and the following disclaimer in the
13.\"    documentation and/or other materials provided with the distribution.
14.\" 3. All advertising materials mentioning features or use of this software
15.\"    must display the following acknowledgement:
16.\"	This product includes software developed by the University of
17.\"	California, Berkeley and its contributors.
18.\" 4. Neither the name of the University nor the names of its contributors
19.\"    may be used to endorse or promote products derived from this software
20.\"    without specific prior written permission.
21.\"
22.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32.\" SUCH DAMAGE.
33.\"
34.\"	@(#)find.1	8.7 (Berkeley) 5/9/95
35.\" $FreeBSD$
36.\"
37.Dd April 06, 2004
38.Dt FIND 1
39.Os
40.Sh NAME
41.Nm find
42.Nd walk a file hierarchy
43.Sh SYNOPSIS
44.Nm
45.Op Fl H | Fl L | Fl P
46.Op Fl EXdsx
47.Op Fl f Ar pathname
48.Op Ar pathname ...
49.Ar expression
50.Sh DESCRIPTION
51The
52.Nm
53utility recursively descends the directory tree for each
54.Ar pathname
55listed, evaluating an
56.Ar expression
57(composed of the
58.Dq primaries
59and
60.Dq operands
61listed below) in terms
62of each file in the tree.
63.Pp
64The options are as follows:
65.Bl -tag -width indent
66.It Fl E
67Interpret regular expressions followed by
68.Ic -regex
69and
70.Ic -iregex
71options as extended (modern) regular expressions rather than basic
72regular expressions (BRE's).
73The
74.Xr re_format 7
75manual page fully describes both formats.
76.It Fl H
77Cause the file information and file type (see
78.Xr stat 2 )
79returned for each symbolic link specified on the command line to be
80those of the file referenced by the link, not the link itself.
81If the referenced file does not exist, the file information and type will
82be for the link itself.
83File information of all symbolic links not on
84the command line is that of the link itself.
85.It Fl L
86Cause the file information and file type (see
87.Xr stat 2 )
88returned for each symbolic link to be those of the file referenced by the
89link, not the link itself.
90If the referenced file does not exist, the file information and type will
91be for the link itself.
92.Pp
93This option is equivalent to the deprecated
94.Ic -follow
95primary.
96.It Fl P
97Cause the file information and file type (see
98.Xr stat 2 )
99returned for each symbolic link to be those of the link itself.
100This is the default.
101.It Fl X
102Permit
103.Nm
104to be safely used in conjunction with
105.Xr xargs 1 .
106If a file name contains any of the delimiting characters used by
107.Xr xargs 1 ,
108a diagnostic message is displayed on standard error, and the file
109is skipped.
110The delimiting characters include single
111.Pq Dq Li " ' "
112and double
113.Pq Dq Li " \*q "
114quotes, backslash
115.Pq Dq Li \e ,
116space, tab and newline characters.
117.Pp
118However, you may wish to consider the
119.Fl print0
120primary in conjunction with
121.Dq Nm xargs Fl 0
122as an effective alternative.
123.It Fl d
124Cause
125.Nm
126to perform a depth\-first traversal, i.e., directories
127are visited in post\-order and all entries in a directory will be acted
128on before the directory itself.
129By default,
130.Nm
131visits directories in pre\-order, i.e., before their contents.
132Note, the default is
133.Em not
134a breadth\-first traversal.
135.Pp
136This option is equivalent to the deprecated
137.Ic -depth
138primary.
139.It Fl f
140Specify a file hierarchy for
141.Nm
142to traverse.
143File hierarchies may also be specified as the operands immediately
144following the options.
145.It Fl s
146Cause
147.Nm
148to traverse the file hierarchies in lexicographical order,
149i.e., alphabetical order within each directory.
150Note:
151.Ql find -s
152and
153.Ql "find | sort"
154may give different results.
155.It Fl x
156Prevent
157.Nm
158from descending into directories that have a device number different
159than that of the file from which the descent began.
160.Pp
161This option is equivalent to the deprecated
162.Ic -xdev
163primary.
164.El
165.Sh PRIMARIES
166.Bl -tag -width indent
167.It Ic -acl
168May be used in conjunction with other options to locate
169files with extended ACLs.
170See
171.Xr acl 3
172for more information.
173.It Ic -amin Ar n
174True if the difference between the file last access time and the time
175.Nm
176was started, rounded up to the next full minute, is
177.Ar n
178minutes.
179.It Ic -anewer Ar file
180Same as
181.Ic -neweram .
182.It Ic -atime Ar n Ns Op Cm smhdw
183If no units are specified, this primary evaluates to
184true if the difference between the file last access time and the time
185.Nm
186was started, rounded up to the next full 24\-hour period, is
187.Ar n
18824\-hour periods.
189.Pp
190If units are specified, this primary evaluates to
191true if the difference between the file last access time and the time
192.Nm
193was started is exactly
194.Ar n
195units.
196Possible time units are as follows:
197.Pp
198.Bl -tag -width indent -compact
199.It Cm s
200second
201.It Cm m
202minute (60 seconds)
203.It Cm h
204hour (60 minutes)
205.It Cm d
206day (24 hours)
207.It Cm w
208week (7 days)
209.El
210.Pp
211Any number of units may be combined in one
212.Ic -atime
213argument, for example,
214.Dq Li "-atime -1h30m" .
215Units are probably only useful when used in conjunction with the
216.Cm +
217or
218.Cm -
219modifier.
220.It Ic -cmin Ar n
221True if the difference between the time of last change of file status
222information and the time
223.Nm
224was started, rounded up to the next full minute, is
225.Ar n
226minutes.
227.It Ic -cnewer Ar file
228Same as
229.Ic -newercm .
230.It Ic -ctime Ar n Ns Op Cm smhdw
231If no units are specified, this primary evaluates to
232true if the difference between the time of last change of file status
233information and the time
234.Nm
235was started, rounded up to the next full 24\-hour period, is
236.Ar n
23724\-hour periods.
238.Pp
239If units are specified, this primary evaluates to
240true if the difference between the time of last change of file status
241information and the time
242.Nm
243was started is exactly
244.Ar n
245units.
246Please refer to the
247.Ic -atime
248primary description for information on supported time units.
249.It Ic -delete
250Delete found files and/or directories.
251Always returns true.
252This executes
253from the current working directory as
254.Nm
255recurses down the tree.
256It will not attempt to delete a filename with a
257.Dq Pa /
258character in its pathname relative to
259.Dq Pa \&.
260for security reasons.
261Depth\-first traversal processing is implied by this option.
262.It Ic -depth
263Always true;
264same as the
265.Fl d
266option.
267.Ic -depth
268can be useful when
269.Nm
270is used with
271.Xr cpio 1
272to process files that are contained in directories with unusual permissions.
273It ensures that you have write permission while you are placing files in a
274directory, then sets the directory's permissions as the last thing.
275.It Ic -empty
276True if the current file or directory is empty.
277.It Ic -exec Ar utility Oo Ar argument ...  Oc Li \&;
278True if the program named
279.Ar utility
280returns a zero value as its exit status.
281Optional
282.Ar arguments
283may be passed to the utility.
284The expression must be terminated by a semicolon
285.Pq Dq Li \&; .
286If you invoke
287.Nm
288from a shell you may need to quote the semicolon if the shell would
289otherwise treat it as a control operator.
290If the string
291.Dq Li {}
292appears anywhere in the utility name or the
293arguments it is replaced by the pathname of the current file.
294.Ar Utility
295will be executed from the directory from which
296.Nm
297was executed.
298.Ar Utility
299and
300.Ar arguments
301are not subject to the further expansion of shell patterns
302and constructs.
303.It Ic -exec Ar utility Oo Ar argument ... Oc Li {} +
304Same as
305.Ic -exec ,
306except that
307.Dq Li {}
308is replaced with as many pathnames as possible for each invocation of
309.Ar utility .
310This behaviour is similar to that of
311.Xr xargs 1 .
312.It Ic -execdir Ar utility Oo Ar argument ... Oc Li \&;
313The
314.Ic -execdir
315primary is identical to the
316.Ic -exec
317primary with the exception that
318.Ar utility
319will be executed from the directory that holds
320the current file.
321The filename substituted for
322the string
323.Dq Li {}
324is not qualified.
325.It Ic -flags Oo Cm - Ns | Ns Cm + Oc Ns Ar flags , Ns Ar notflags
326The flags are specified using symbolic names (see
327.Xr chflags 1 ) .
328Those with the
329.Qq Li no
330prefix (except
331.Qq Li nodump )
332are said to be
333.Ar notflags .
334Flags in
335.Ar flags
336are checked to be set, and flags in
337.Ar notflags
338are checked to be not set.
339Note that this is different from
340.Ic -perm ,
341which only allows the user to specify mode bits that are set.
342.Pp
343If flags are preceded by a dash
344.Pq Dq Li - ,
345this primary evaluates to true
346if at least all of the bits in
347.Ar flags
348and none of the bits in
349.Ar notflags
350are set in the file's flags bits.
351If flags are preceded by a plus
352.Pq Dq Li + ,
353this primary evaluates to true
354if any of the bits in
355.Ar flags
356is set in the file's flags bits,
357or any of the bits in
358.Ar notflags
359is not set in the file's flags bits.
360Otherwise,
361this primary evaluates to true
362if the bits in
363.Ar flags
364exactly match the file's flags bits,
365and none of the
366.Ar flags
367bits match those of
368.Ar notflags .
369.It Ic -fstype Ar type
370True if the file is contained in a file system of type
371.Ar type .
372The
373.Xr sysctl 8
374command can be used to find out the types of file systems
375that are available on the system:
376.Pp
377.Dl "sysctl vfs"
378.Pp
379In addition, there are two pseudo-types,
380.Dq Li local
381and
382.Dq Li rdonly .
383The former matches any file system physically mounted on the system where
384the
385.Nm
386is being executed and the latter matches any file system which is
387mounted read-only.
388.It Ic -group Ar gname
389True if the file belongs to the group
390.Ar gname .
391If
392.Ar gname
393is numeric and there is no such group name, then
394.Ar gname
395is treated as a group ID.
396.It Ic -iname Ar pattern
397Like
398.Ic -name ,
399but the match is case insensitive.
400.It Ic -inum Ar n
401True if the file has inode number
402.Ar n .
403.It Ic -ipath Ar pattern
404Like
405.Ic -path ,
406but the match is case insensitive.
407.It Ic -iregex Ar pattern
408Like
409.Ic -regex ,
410but the match is case insensitive.
411.It Ic -links Ar n
412True if the file has
413.Ar n
414links.
415.It Ic -ls
416This primary always evaluates to true.
417The following information for the current file is written to standard output:
418its inode number, size in 512\-byte blocks, file permissions, number of hard
419links, owner, group, size in bytes, last modification time, and pathname.
420If the file is a block or character special file, the major and minor numbers
421will be displayed instead of the size in bytes.
422If the file is a symbolic link, the pathname of the linked\-to file will be
423displayed preceded by
424.Dq Li -> .
425The format is identical to that produced by
426.Bk -words
427.Nm ls Fl dgils .
428.Ek
429.It Ic -maxdepth Ar n
430True if the depth of the current file into the tree is less than or equal to
431.Ar n .
432.It Ic -mindepth Ar n
433True if the depth of the current file into the tree is greater than or equal to
434.Ar n .
435.It Ic -mmin Ar n
436True if the difference between the file last modification time and the time
437.Nm
438was started, rounded up to the next full minute, is
439.Ar n
440minutes.
441.It Ic -mnewer Ar file
442Same as
443.Ic -newer .
444.It Ic -mtime Ar n Ns Op Cm smhdw
445If no units are specified, this primary evaluates to
446true if the difference between the file last modification time and the time
447.Nm
448was started, rounded up to the next full 24\-hour period, is
449.Ar n
45024\-hour periods.
451.Pp
452If units are specified, this primary evaluates to
453true if the difference between the file last modification time and the time
454.Nm
455was started is exactly
456.Ar n
457units.
458Please refer to the
459.Ic -atime
460primary description for information on supported time units.
461.It Ic -name Ar pattern
462True if the last component of the pathname being examined matches
463.Ar pattern .
464Special shell pattern matching characters
465.Dq ( Li \&[ ,
466.Dq Li \&] ,
467.Dq Li * ,
468and
469.Dq Li \&? )
470may be used as part of
471.Ar pattern .
472These characters may be matched explicitly by escaping them with a
473backslash
474.Pq Dq Li \e .
475.It Ic -newer Ar file
476True if the current file has a more recent last modification time than
477.Ar file .
478.It Ic -newer Ns Ar X Ns Ar Y Ar file
479True if the current file has a more recent last access time
480.Ar ( X Ns = Ns Cm a ) ,
481change time
482.Ar ( X Ns = Ns Cm c ) ,
483or modification time
484.Ar ( X Ns = Ns Cm m )
485than the last access time
486.Ar ( Y Ns = Ns Cm a ) ,
487change time
488.Ar ( Y Ns = Ns Cm c ) ,
489or modification time
490.Ar ( Y Ns = Ns Cm m )
491of
492.Ar file .
493In addition, if
494.Ar Y Ns = Ns Cm t ,
495then
496.Ar file
497is instead interpreted as a direct date specification of the form
498understood by
499.Xr cvs 1 .
500Note that
501.Ic -newermm
502is equivalent to
503.Ic -newer .
504.It Ic -nogroup
505True if the file belongs to an unknown group.
506.It Ic -nouser
507True if the file belongs to an unknown user.
508.It Ic -ok Ar utility Oo Ar argument ... Oc Li \&;
509The
510.Ic -ok
511primary is identical to the
512.Ic -exec
513primary with the exception that
514.Nm
515requests user affirmation for the execution of the
516.Ar utility
517by printing
518a message to the terminal and reading a response.
519If the response is other than
520.Dq Li y
521the command is not executed and the
522value of the
523.Ic -ok
524expression is false.
525.It Ic -okdir Ar utility Oo Ar argument ... Oc Li \&;
526The
527.Ic -okdir
528primary is identical to the
529.Ic -execdir
530primary with the same exception as described for the
531.Ic -ok
532primary.
533.It Ic -path Ar pattern
534True if the pathname being examined matches
535.Ar pattern .
536Special shell pattern matching characters
537.Dq ( Li \&[ ,
538.Dq Li \&] ,
539.Dq Li * ,
540and
541.Dq Li \&? )
542may be used as part of
543.Ar pattern .
544These characters may be matched explicitly by escaping them with a
545backslash
546.Pq Dq Li \e .
547Slashes
548.Pq Dq Li /
549are treated as normal characters and do not have to be
550matched explicitly.
551.It Ic -perm Oo Cm - Ns | Ns Cm + Oc Ns Ar mode
552The
553.Ar mode
554may be either symbolic (see
555.Xr chmod 1 )
556or an octal number.
557If the
558.Ar mode
559is symbolic, a starting value of zero is assumed and the
560.Ar mode
561sets or clears permissions without regard to the process' file mode
562creation mask.
563If the
564.Ar mode
565is octal, only bits 07777
566.Pq Dv S_ISUID | S_ISGID | S_ISTXT | S_IRWXU | S_IRWXG | S_IRWXO
567of the file's mode bits participate
568in the comparison.
569If the
570.Ar mode
571is preceded by a dash
572.Pq Dq Li - ,
573this primary evaluates to true
574if at least all of the bits in the
575.Ar mode
576are set in the file's mode bits.
577If the
578.Ar mode
579is preceded by a plus
580.Pq Dq Li + ,
581this primary evaluates to true
582if any of the bits in the
583.Ar mode
584are set in the file's mode bits.
585Otherwise, this primary evaluates to true if
586the bits in the
587.Ar mode
588exactly match the file's mode bits.
589Note, the first character of a symbolic mode may not be a dash
590.Pq Dq Li - .
591.It Ic -print
592This primary always evaluates to true.
593It prints the pathname of the current file to standard output.
594If none of
595.Ic -exec , -ls , -print0 ,
596or
597.Ic -ok
598is specified, the given expression shall be effectively replaced by
599.Cm \&( Ar "given expression" Cm \&) Ic -print .
600.It Ic -print0
601This primary always evaluates to true.
602It prints the pathname of the current file to standard output, followed by an
603.Tn ASCII NUL
604character (character code 0).
605.It Ic -prune
606This primary always evaluates to true.
607It causes
608.Nm
609to not descend into the current file.
610Note, the
611.Ic -prune
612primary has no effect if the
613.Fl d
614option was specified.
615.It Ic -regex Ar pattern
616True if the whole path of the file matches
617.Ar pattern
618using regular expression.
619To match a file named
620.Dq Pa ./foo/xyzzy ,
621you can use the regular expression
622.Dq Li ".*/[xyz]*"
623or
624.Dq Li ".*/foo/.*" ,
625but not
626.Dq Li xyzzy
627or
628.Dq Li /foo/ .
629.It Ic -size Ar n Ns Op Cm c
630True if the file's size, rounded up, in 512\-byte blocks is
631.Ar n .
632If
633.Ar n
634is followed by a
635.Cm c ,
636then the primary is true if the
637file's size is
638.Ar n
639bytes (characters).
640.It Ic -type Ar t
641True if the file is of the specified type.
642Possible file types are as follows:
643.Pp
644.Bl -tag -width indent -compact
645.It Cm b
646block special
647.It Cm c
648character special
649.It Cm d
650directory
651.It Cm f
652regular file
653.It Cm l
654symbolic link
655.It Cm p
656FIFO
657.It Cm s
658socket
659.El
660.It Ic -user Ar uname
661True if the file belongs to the user
662.Ar uname .
663If
664.Ar uname
665is numeric and there is no such user name, then
666.Ar uname
667is treated as a user ID.
668.El
669.Pp
670All primaries which take a numeric argument allow the number to be
671preceded by a plus sign
672.Pq Dq Li +
673or a minus sign
674.Pq Dq Li - .
675A preceding plus sign means
676.Dq more than n ,
677a preceding minus sign means
678.Dq less than n
679and neither means
680.Dq exactly n .
681.Sh OPERATORS
682The primaries may be combined using the following operators.
683The operators are listed in order of decreasing precedence.
684.Pp
685.Bl -tag -width "( expression )" -compact
686.It Cm \&( Ar expression Cm \&)
687This evaluates to true if the parenthesized expression evaluates to
688true.
689.Pp
690.It Cm \&! Ar expression
691.It Cm -false Ar expression
692.It Cm -not Ar expression
693This is the unary
694.Tn NOT
695operator.
696It evaluates to true if the expression is false.
697.Pp
698.It Ar expression Cm -and Ar expression
699.It Ar expression expression
700The
701.Cm -and
702operator is the logical
703.Tn AND
704operator.
705As it is implied by the juxtaposition of two expressions it does not
706have to be specified.
707The expression evaluates to true if both expressions are true.
708The second expression is not evaluated if the first expression is false.
709.Pp
710.It Ar expression Cm -or Ar expression
711The
712.Cm -or
713operator is the logical
714.Tn OR
715operator.
716The expression evaluates to true if either the first or the second expression
717is true.
718The second expression is not evaluated if the first expression is true.
719.El
720.Pp
721All operands and primaries must be separate arguments to
722.Nm .
723Primaries which themselves take arguments expect each argument
724to be a separate argument to
725.Nm .
726.Sh EXAMPLES
727The following examples are shown as given to the shell:
728.Bl -tag -width indent
729.It Li "find / \e! -name \*q*.c\*q -print"
730Print out a list of all the files whose names do not end in
731.Pa .c .
732.It Li "find / -newer ttt -user wnj -print"
733Print out a list of all the files owned by user
734.Dq wnj
735that are newer
736than the file
737.Pa ttt .
738.It Li "find / \e! \e( -newer ttt -user wnj \e) -print"
739Print out a list of all the files which are not both newer than
740.Pa ttt
741and owned by
742.Dq wnj .
743.It Li "find / \e( -newer ttt -or -user wnj \e) -print"
744Print out a list of all the files that are either owned by
745.Dq wnj
746or that are newer than
747.Pa ttt .
748.It Li "find / -newerct '1 minute ago' -print"
749Print out a list of all the files whose inode change time is more
750recent than the current time minus one minute.
751.It Li "find / -type f -exec echo {} \e\;"
752Use the
753.Xr echo 1
754command to print out a list of all the files.
755.El
756.Sh COMPATIBILITY
757The
758.Ic -follow
759primary is deprecated; the
760.Fl L
761option should be used instead.
762See the
763.Sx STANDARDS
764section below for details.
765.Sh SEE ALSO
766.Xr chflags 1 ,
767.Xr chmod 1 ,
768.Xr cvs 1 ,
769.Xr locate 1 ,
770.Xr whereis 1 ,
771.Xr which 1 ,
772.Xr xargs 1 ,
773.Xr stat 2 ,
774.Xr acl 3 ,
775.Xr fts 3 ,
776.Xr getgrent 3 ,
777.Xr getpwent 3 ,
778.Xr strmode 3 ,
779.Xr re_format 7 ,
780.Xr symlink 7
781.Sh STANDARDS
782The
783.Nm
784utility syntax is a superset of the syntax specified by the
785.St -p1003.2
786standard.
787.Pp
788All the single character options as well as the
789.Ic -iname , -inum , -iregex , -print0 , -delete , -ls ,
790and
791.Ic -regex
792primaries are extensions to
793.St -p1003.2 .
794.Pp
795Historically, the
796.Fl d , L
797and
798.Fl x
799options were implemented using the primaries
800.Ic -depth , -follow ,
801and
802.Ic -xdev .
803These primaries always evaluated to true.
804As they were really global variables that took effect before the traversal
805began, some legal expressions could have unexpected results.
806An example is the expression
807.Ic -print Cm -o Ic -depth .
808As
809.Ic -print
810always evaluates to true, the standard order of evaluation
811implies that
812.Ic -depth
813would never be evaluated.
814This is not the case.
815.Pp
816The operator
817.Cm -or
818was implemented as
819.Cm -o ,
820and the operator
821.Cm -and
822was implemented as
823.Cm -a .
824.Pp
825Historic implementations of the
826.Ic -exec
827and
828.Ic -ok
829primaries did not replace the string
830.Dq Li {}
831in the utility name or the
832utility arguments if it had preceding or following non-whitespace characters.
833This version replaces it no matter where in the utility name or arguments
834it appears.
835.Pp
836The
837.Fl E
838option was inspired by the equivalent
839.Xr grep 1
840and
841.Xr sed 1
842options.
843.Sh BUGS
844The special characters used by
845.Nm
846are also special characters to many shell programs.
847In particular, the characters
848.Dq Li * ,
849.Dq Li \&[ ,
850.Dq Li \&] ,
851.Dq Li \&? ,
852.Dq Li \&( ,
853.Dq Li \&) ,
854.Dq Li \&! ,
855.Dq Li \e
856and
857.Dq Li \&;
858may have to be escaped from the shell.
859.Pp
860As there is no delimiter separating options and file names or file
861names and the
862.Ar expression ,
863it is difficult to specify files named
864.Pa -xdev
865or
866.Pa \&! .
867These problems are handled by the
868.Fl f
869option and the
870.Xr getopt 3
871.Dq Fl Fl
872construct.
873.Pp
874The
875.Ic -delete
876primary does not interact well with other options that cause the file system
877tree traversal options to be changed.
878.Sh HISTORY
879A
880.Nm
881command appeared in
882.At v1 .
883