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