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 February 24, 2008 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 path 49.Ar path ... 50.Op Ar expression 51.Nm 52.Op Fl H | Fl L | Fl P 53.Op Fl EXdsx 54.Fl f Ar path 55.Op Ar path ... 56.Op Ar expression 57.Sh DESCRIPTION 58The 59.Nm 60utility recursively descends the directory tree for each 61.Ar path 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 78primaries 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 . 147The 148.Fl d 149option 150can be useful when 151.Nm 152is used with 153.Xr cpio 1 154to process files that are contained in directories with unusual permissions. 155It ensures that you have write permission while you are placing files in a 156directory, then sets the directory's permissions as the last thing. 157.It Fl f 158Specify a file hierarchy for 159.Nm 160to traverse. 161File hierarchies may also be specified as the operands immediately 162following the options. 163.It Fl s 164Cause 165.Nm 166to traverse the file hierarchies in lexicographical order, 167i.e., alphabetical order within each directory. 168Note: 169.Ql find -s 170and 171.Ql "find | sort" 172may give different results. 173.It Fl x 174Prevent 175.Nm 176from descending into directories that have a device number different 177than that of the file from which the descent began. 178.Pp 179This option is equivalent to the deprecated 180.Ic -xdev 181primary. 182.El 183.Sh PRIMARIES 184.Bl -tag -width indent 185.It Ic -Bmin Ar n 186True if the difference between the time of a file's inode creation 187and the time 188.Nm 189was started, rounded up to the next full minute, is 190.Ar n 191minutes. 192.It Ic -Bnewer Ar file 193Same as 194.Ic -newerBm . 195.It Ic -Btime Ar n Ns Op Cm smhdw 196If no units are specified, this primary evaluates to 197true if the difference between the time of a file's inode creation 198and the time 199.Nm 200was started, rounded up to the next full 24-hour period, is 201.Ar n 20224-hour periods. 203.Pp 204If units are specified, this primary evaluates to 205true if the difference between the time of a file's inode creation 206and the time 207.Nm 208was started is exactly 209.Ar n 210units. 211Please refer to the 212.Ic -atime 213primary description for information on supported time units. 214.It Ic -acl 215May be used in conjunction with other primaries to locate 216files with extended ACLs. 217See 218.Xr acl 3 219for more information. 220.It Ic -amin Ar n 221True if the difference between the file last access time and the time 222.Nm 223was started, rounded up to the next full minute, is 224.Ar n 225minutes. 226.It Ic -anewer Ar file 227Same as 228.Ic -neweram . 229.It Ic -atime Ar n Ns Op Cm smhdw 230If no units are specified, this primary evaluates to 231true if the difference between the file last access time and the time 232.Nm 233was started, rounded up to the next full 24-hour period, is 234.Ar n 23524-hour periods. 236.Pp 237If units are specified, this primary evaluates to 238true if the difference between the file last access time and the time 239.Nm 240was started is exactly 241.Ar n 242units. 243Possible time units are as follows: 244.Pp 245.Bl -tag -width indent -compact 246.It Cm s 247second 248.It Cm m 249minute (60 seconds) 250.It Cm h 251hour (60 minutes) 252.It Cm d 253day (24 hours) 254.It Cm w 255week (7 days) 256.El 257.Pp 258Any number of units may be combined in one 259.Ic -atime 260argument, for example, 261.Dq Li "-atime -1h30m" . 262Units are probably only useful when used in conjunction with the 263.Cm + 264or 265.Cm - 266modifier. 267.It Ic -cmin Ar n 268True if the difference between the time of last change of file status 269information and the time 270.Nm 271was started, rounded up to the next full minute, is 272.Ar n 273minutes. 274.It Ic -cnewer Ar file 275Same as 276.Ic -newercm . 277.It Ic -ctime Ar n Ns Op Cm smhdw 278If no units are specified, this primary evaluates to 279true if the difference between the time of last change of file status 280information and the time 281.Nm 282was started, rounded up to the next full 24-hour period, is 283.Ar n 28424-hour periods. 285.Pp 286If units are specified, this primary evaluates to 287true if the difference between the time of last change of file status 288information and the time 289.Nm 290was started is exactly 291.Ar n 292units. 293Please refer to the 294.Ic -atime 295primary description for information on supported time units. 296.It Ic -d 297Same as 298.Ic depth . 299GNU find implements this as a primary in mistaken emulation of 300.Fx 301.Xr find 1 . 302.It Ic -delete 303Delete found files and/or directories. 304Always returns true. 305This executes 306from the current working directory as 307.Nm 308recurses down the tree. 309It will not attempt to delete a filename with a 310.Dq Pa / 311character in its pathname relative to 312.Dq Pa \&. 313for security reasons. 314Depth-first traversal processing is implied by this option. 315.It Ic -depth 316Always true; 317same as the 318.Fl d 319option. 320.It Ic -depth Ar n 321True if the depth of the file relative to the starting point of the traversal 322is 323.Ar n . 324.It Ic -empty 325True if the current file or directory is empty. 326.It Ic -exec Ar utility Oo Ar argument ... Oc Li \&; 327True if the program named 328.Ar utility 329returns a zero value as its exit status. 330Optional 331.Ar arguments 332may be passed to the utility. 333The expression must be terminated by a semicolon 334.Pq Dq Li \&; . 335If you invoke 336.Nm 337from a shell you may need to quote the semicolon if the shell would 338otherwise treat it as a control operator. 339If the string 340.Dq Li {} 341appears anywhere in the utility name or the 342arguments it is replaced by the pathname of the current file. 343.Ar Utility 344will be executed from the directory from which 345.Nm 346was executed. 347.Ar Utility 348and 349.Ar arguments 350are not subject to the further expansion of shell patterns 351and constructs. 352.It Ic -exec Ar utility Oo Ar argument ... Oc Li {} + 353Same as 354.Ic -exec , 355except that 356.Dq Li {} 357is replaced with as many pathnames as possible for each invocation of 358.Ar utility . 359This behaviour is similar to that of 360.Xr xargs 1 . 361.It Ic -execdir Ar utility Oo Ar argument ... Oc Li \&; 362The 363.Ic -execdir 364primary is identical to the 365.Ic -exec 366primary with the exception that 367.Ar utility 368will be executed from the directory that holds 369the current file. 370The filename substituted for 371the string 372.Dq Li {} 373is not qualified. 374.It Ic -execdir Ar utility Oo Ar argument ... Oc Li {} + 375Same as 376.Ic -execdir , 377except that 378.Dq Li {} 379is replaced with as many pathnames as possible for each invocation of 380.Ar utility . 381This behaviour is similar to that of 382.Xr xargs 1 . 383.It Ic -flags Oo Cm - Ns | Ns Cm + Oc Ns Ar flags , Ns Ar notflags 384The flags are specified using symbolic names (see 385.Xr chflags 1 ) . 386Those with the 387.Qq Li no 388prefix (except 389.Qq Li nodump ) 390are said to be 391.Ar notflags . 392Flags in 393.Ar flags 394are checked to be set, and flags in 395.Ar notflags 396are checked to be not set. 397Note that this is different from 398.Ic -perm , 399which only allows the user to specify mode bits that are set. 400.Pp 401If flags are preceded by a dash 402.Pq Dq Li - , 403this primary evaluates to true 404if at least all of the bits in 405.Ar flags 406and none of the bits in 407.Ar notflags 408are set in the file's flags bits. 409If flags are preceded by a plus 410.Pq Dq Li + , 411this primary evaluates to true 412if any of the bits in 413.Ar flags 414is set in the file's flags bits, 415or any of the bits in 416.Ar notflags 417is not set in the file's flags bits. 418Otherwise, 419this primary evaluates to true 420if the bits in 421.Ar flags 422exactly match the file's flags bits, 423and none of the 424.Ar flags 425bits match those of 426.Ar notflags . 427.It Ic -fstype Ar type 428True if the file is contained in a file system of type 429.Ar type . 430The 431.Xr sysctl 8 432command can be used to find out the types of file systems 433that are available on the system: 434.Pp 435.Dl "sysctl vfs" 436.Pp 437In addition, there are two pseudo-types, 438.Dq Li local 439and 440.Dq Li rdonly . 441The former matches any file system physically mounted on the system where 442the 443.Nm 444is being executed and the latter matches any file system which is 445mounted read-only. 446.It Ic -gid Ar gname 447The same thing as 448.Ar -group Ar gname 449for compatibility with GNU find. 450GNU find imposes a restriction that 451.Ar gname 452is numeric, while 453.Xr find 1 454does not. 455.It Ic -group Ar gname 456True if the file belongs to the group 457.Ar gname . 458If 459.Ar gname 460is numeric and there is no such group name, then 461.Ar gname 462is treated as a group ID. 463.It Ic -ignore_readdir_race 464This option is for GNU find compatibility and is ignored. 465.It Ic -ilname Ar pattern 466Like 467.Ic -lname , 468but the match is case insensitive. 469This is a GNU find extension. 470.It Ic -iname Ar pattern 471Like 472.Ic -name , 473but the match is case insensitive. 474.It Ic -inum Ar n 475True if the file has inode number 476.Ar n . 477.It Ic -ipath Ar pattern 478Like 479.Ic -path , 480but the match is case insensitive. 481.It Ic -iregex Ar pattern 482Like 483.Ic -regex , 484but the match is case insensitive. 485.It Ic -iwholename Ar pattern 486The same thing as 487.Ic -ipath , 488for GNU find compatibility. 489.It Ic -links Ar n 490True if the file has 491.Ar n 492links. 493.It Ic -lname Ar pattern 494Like 495.Ic -name , 496but the contents of the symbolic link are matched instead of the file 497name. 498This is a GNU find extension. 499.It Ic -ls 500This primary always evaluates to true. 501The following information for the current file is written to standard output: 502its inode number, size in 512-byte blocks, file permissions, number of hard 503links, owner, group, size in bytes, last modification time, and pathname. 504If the file is a block or character special file, the major and minor numbers 505will be displayed instead of the size in bytes. 506If the file is a symbolic link, the pathname of the linked-to file will be 507displayed preceded by 508.Dq Li -> . 509The format is identical to that produced by 510.Bk -words 511.Dq Nm ls Fl dgils . 512.Ek 513.It Ic -maxdepth Ar n 514Always true; descend at most 515.Ar n 516directory levels below the command line arguments. 517If any 518.Ic -maxdepth 519primary is specified, it applies to the entire expression even if it would 520not normally be evaluated. 521.Dq Ic -maxdepth Li 0 522limits the whole search to the command line arguments. 523.It Ic -mindepth Ar n 524Always true; do not apply any tests or actions at levels less than 525.Ar n . 526If any 527.Ic -mindepth 528primary is specified, it applies to the entire expression even if it would 529not normally be evaluated. 530.Dq Ic -mindepth Li 1 531processes all but the command line arguments. 532.It Ic -mmin Ar n 533True if the difference between the file last modification time and the time 534.Nm 535was started, rounded up to the next full minute, is 536.Ar n 537minutes. 538.It Ic -mnewer Ar file 539Same as 540.Ic -newer . 541.It Ic -mount 542The same thing as 543.Ic -xdev , 544for GNU find compatibility. 545.It Ic -mtime Ar n Ns Op Cm smhdw 546If no units are specified, this primary evaluates to 547true if the difference between the file last modification time and the time 548.Nm 549was started, rounded up to the next full 24-hour period, is 550.Ar n 55124-hour periods. 552.Pp 553If units are specified, this primary evaluates to 554true if the difference between the file last modification time and the time 555.Nm 556was started is exactly 557.Ar n 558units. 559Please refer to the 560.Ic -atime 561primary description for information on supported time units. 562.It Ic -name Ar pattern 563True if the last component of the pathname being examined matches 564.Ar pattern . 565Special shell pattern matching characters 566.Dq ( Li \&[ , 567.Dq Li \&] , 568.Dq Li * , 569and 570.Dq Li \&? ) 571may be used as part of 572.Ar pattern . 573These characters may be matched explicitly by escaping them with a 574backslash 575.Pq Dq Li \e . 576.It Ic -newer Ar file 577True if the current file has a more recent last modification time than 578.Ar file . 579.It Ic -newer Ns Ar X Ns Ar Y Ar file 580True if the current file has a more recent last access time 581.Pq Ar X Ns = Ns Cm a , 582inode creation time 583.Pq Ar X Ns = Ns Cm B , 584change time 585.Pq Ar X Ns = Ns Cm c , 586or modification time 587.Pq Ar X Ns = Ns Cm m 588than the last access time 589.Pq Ar Y Ns = Ns Cm a , 590inode creation time 591.Pq Ar Y Ns = Ns Cm B , 592change time 593.Pq Ar Y Ns = Ns Cm c , 594or modification time 595.Pq Ar Y Ns = Ns Cm m 596of 597.Ar file . 598In addition, if 599.Ar Y Ns = Ns Cm t , 600then 601.Ar file 602is instead interpreted as a direct date specification of the form 603understood by 604.Xr cvs 1 . 605Note that 606.Ic -newermm 607is equivalent to 608.Ic -newer . 609.It Ic -nogroup 610True if the file belongs to an unknown group. 611.It Ic -noignore_readdir_race 612This option is for GNU find compatibility and is ignored. 613.It Ic -noleaf 614This option is for GNU find compatibility. 615In GNU find it disables an optimization not relevant to 616.Xr find 1 , 617so it is ignored. 618.It Ic -nouser 619True if the file belongs to an unknown user. 620.It Ic -ok Ar utility Oo Ar argument ... Oc Li \&; 621The 622.Ic -ok 623primary is identical to the 624.Ic -exec 625primary with the exception that 626.Nm 627requests user affirmation for the execution of the 628.Ar utility 629by printing 630a message to the terminal and reading a response. 631If the response is not affirmative 632.Ql ( y 633in the 634.Dq Li POSIX 635locale), 636the command is not executed and the 637value of the 638.Ic -ok 639expression is false. 640.It Ic -okdir Ar utility Oo Ar argument ... Oc Li \&; 641The 642.Ic -okdir 643primary is identical to the 644.Ic -execdir 645primary with the same exception as described for the 646.Ic -ok 647primary. 648.It Ic -path Ar pattern 649True if the pathname being examined matches 650.Ar pattern . 651Special shell pattern matching characters 652.Dq ( Li \&[ , 653.Dq Li \&] , 654.Dq Li * , 655and 656.Dq Li \&? ) 657may be used as part of 658.Ar pattern . 659These characters may be matched explicitly by escaping them with a 660backslash 661.Pq Dq Li \e . 662Slashes 663.Pq Dq Li / 664are treated as normal characters and do not have to be 665matched explicitly. 666.It Ic -perm Oo Cm - Ns | Ns Cm + Oc Ns Ar mode 667The 668.Ar mode 669may be either symbolic (see 670.Xr chmod 1 ) 671or an octal number. 672If the 673.Ar mode 674is symbolic, a starting value of zero is assumed and the 675.Ar mode 676sets or clears permissions without regard to the process' file mode 677creation mask. 678If the 679.Ar mode 680is octal, only bits 07777 681.Pq Dv S_ISUID | S_ISGID | S_ISTXT | S_IRWXU | S_IRWXG | S_IRWXO 682of the file's mode bits participate 683in the comparison. 684If the 685.Ar mode 686is preceded by a dash 687.Pq Dq Li - , 688this primary evaluates to true 689if at least all of the bits in the 690.Ar mode 691are set in the file's mode bits. 692If the 693.Ar mode 694is preceded by a plus 695.Pq Dq Li + , 696this primary evaluates to true 697if any of the bits in the 698.Ar mode 699are set in the file's mode bits. 700Otherwise, this primary evaluates to true if 701the bits in the 702.Ar mode 703exactly match the file's mode bits. 704Note, the first character of a symbolic mode may not be a dash 705.Pq Dq Li - . 706.It Ic -print 707This primary always evaluates to true. 708It prints the pathname of the current file to standard output. 709If none of 710.Ic -exec , -ls , -print0 , 711or 712.Ic -ok 713is specified, the given expression shall be effectively replaced by 714.Cm \&( Ar "given expression" Cm \&) Ic -print . 715.It Ic -print0 716This primary always evaluates to true. 717It prints the pathname of the current file to standard output, followed by an 718.Tn ASCII 719.Dv NUL 720character (character code 0). 721.It Ic -prune 722This primary always evaluates to true. 723It causes 724.Nm 725to not descend into the current file. 726Note, the 727.Ic -prune 728primary has no effect if the 729.Fl d 730option was specified. 731.It Ic -regex Ar pattern 732True if the whole path of the file matches 733.Ar pattern 734using regular expression. 735To match a file named 736.Dq Pa ./foo/xyzzy , 737you can use the regular expression 738.Dq Li ".*/[xyz]*" 739or 740.Dq Li ".*/foo/.*" , 741but not 742.Dq Li xyzzy 743or 744.Dq Li /foo/ . 745.It Ic -samefile Ar name 746True if the file is a hard link to 747.Ar name . 748If the command option 749.Ic -L 750is specified, it is also true if the file is a symbolic link and 751points to 752.Ar name . 753.It Ic -size Ar n Ns Op Cm ckMGTP 754True if the file's size, rounded up, in 512-byte blocks is 755.Ar n . 756If 757.Ar n 758is followed by a 759.Cm c , 760then the primary is true if the 761file's size is 762.Ar n 763bytes (characters). 764Similarly if 765.Ar n 766is followed by a scale indicator then the file's size is compared to 767.Ar n 768scaled as: 769.Pp 770.Bl -tag -width indent -compact 771.It Cm k 772kilobytes (1024 bytes) 773.It Cm M 774megabytes (1024 kilobytes) 775.It Cm G 776gigabytes (1024 megabytes) 777.It Cm T 778terabytes (1024 gigabytes) 779.It Cm P 780petabytes (1024 terabytes) 781.El 782.It Ic -type Ar t 783True if the file is of the specified type. 784Possible file types are as follows: 785.Pp 786.Bl -tag -width indent -compact 787.It Cm b 788block special 789.It Cm c 790character special 791.It Cm d 792directory 793.It Cm f 794regular file 795.It Cm l 796symbolic link 797.It Cm p 798FIFO 799.It Cm s 800socket 801.El 802.It Ic -uid Ar uname 803The same thing as 804.Ar -user Ar uname 805for compatibility with GNU find. 806GNU find imposes a restriction that 807.Ar uname 808is numeric, while 809.Xr find 1 810does not. 811.It Ic -user Ar uname 812True if the file belongs to the user 813.Ar uname . 814If 815.Ar uname 816is numeric and there is no such user name, then 817.Ar uname 818is treated as a user ID. 819.It Ic -wholename Ar pattern 820The same thing as 821.Ic -path , 822for GNU find compatibility. 823.El 824.Pp 825All primaries which take a numeric argument allow the number to be 826preceded by a plus sign 827.Pq Dq Li + 828or a minus sign 829.Pq Dq Li - . 830A preceding plus sign means 831.Dq more than n , 832a preceding minus sign means 833.Dq less than n 834and neither means 835.Dq exactly n . 836.Sh OPERATORS 837The primaries may be combined using the following operators. 838The operators are listed in order of decreasing precedence. 839.Pp 840.Bl -tag -width indent -compact 841.It Cm \&( Ar expression Cm \&) 842This evaluates to true if the parenthesized expression evaluates to 843true. 844.Pp 845.It Cm \&! Ar expression 846.It Cm -not Ar expression 847This is the unary 848.Tn NOT 849operator. 850It evaluates to true if the expression is false. 851.Pp 852.It Cm -false 853Always false. 854.It Cm -true 855Always true. 856.Pp 857.It Ar expression Cm -and Ar expression 858.It Ar expression expression 859The 860.Cm -and 861operator is the logical 862.Tn AND 863operator. 864As it is implied by the juxtaposition of two expressions it does not 865have to be specified. 866The expression evaluates to true if both expressions are true. 867The second expression is not evaluated if the first expression is false. 868.Pp 869.It Ar expression Cm -or Ar expression 870The 871.Cm -or 872operator is the logical 873.Tn OR 874operator. 875The expression evaluates to true if either the first or the second expression 876is true. 877The second expression is not evaluated if the first expression is true. 878.El 879.Pp 880All operands and primaries must be separate arguments to 881.Nm . 882Primaries which themselves take arguments expect each argument 883to be a separate argument to 884.Nm . 885.Sh ENVIRONMENT 886The 887.Ev LANG , LC_ALL , LC_COLLATE , LC_CTYPE , LC_MESSAGES 888and 889.Ev LC_TIME 890environment variables affect the execution of the 891.Nm 892utility as described in 893.Xr environ 7 . 894.Sh EXAMPLES 895The following examples are shown as given to the shell: 896.Bl -tag -width indent 897.It Li "find / \e! -name \*q*.c\*q -print" 898Print out a list of all the files whose names do not end in 899.Pa .c . 900.It Li "find / -newer ttt -user wnj -print" 901Print out a list of all the files owned by user 902.Dq wnj 903that are newer 904than the file 905.Pa ttt . 906.It Li "find / \e! \e( -newer ttt -user wnj \e) -print" 907Print out a list of all the files which are not both newer than 908.Pa ttt 909and owned by 910.Dq wnj . 911.It Li "find / \e( -newer ttt -or -user wnj \e) -print" 912Print out a list of all the files that are either owned by 913.Dq wnj 914or that are newer than 915.Pa ttt . 916.It Li "find / -newerct '1 minute ago' -print" 917Print out a list of all the files whose inode change time is more 918recent than the current time minus one minute. 919.It Li "find / -type f -exec echo {} \e;" 920Use the 921.Xr echo 1 922command to print out a list of all the files. 923.It Li "find -L /usr/ports/packages -type l -delete" 924Delete all broken symbolic links in 925.Pa /usr/ports/packages . 926.It Li "find /usr/src -name CVS -prune -o -depth +6 -print" 927Find files and directories that are at least seven levels deep 928in the working directory 929.Pa /usr/src . 930.It Li "find /usr/src -name CVS -prune -o -mindepth 7 -print" 931Is not equivalent to the previous example, since 932.Ic -prune 933is not evaluated below level seven. 934.El 935.Sh COMPATIBILITY 936The 937.Ic -follow 938primary is deprecated; the 939.Fl L 940option should be used instead. 941See the 942.Sx STANDARDS 943section below for details. 944.Sh SEE ALSO 945.Xr chflags 1 , 946.Xr chmod 1 , 947.Xr cvs 1 , 948.Xr locate 1 , 949.Xr whereis 1 , 950.Xr which 1 , 951.Xr xargs 1 , 952.Xr stat 2 , 953.Xr acl 3 , 954.Xr fts 3 , 955.Xr getgrent 3 , 956.Xr getpwent 3 , 957.Xr strmode 3 , 958.Xr re_format 7 , 959.Xr symlink 7 960.Sh STANDARDS 961The 962.Nm 963utility syntax is a superset of the syntax specified by the 964.St -p1003.1-2001 965standard. 966.Pp 967All the single character options except 968.Fl H 969and 970.Fl L 971as well as 972.Ic -amin , -anewer , -cmin , -cnewer , -delete , -empty , -fstype , 973.Ic -iname , -inum , -iregex , -ls , -maxdepth , -mindepth , -mmin , 974.Ic -path , -print0 , -regex 975and all of the 976.Ic -B* 977birthtime related primaries are extensions to 978.St -p1003.1-2001 . 979.Pp 980Historically, the 981.Fl d , L 982and 983.Fl x 984options were implemented using the primaries 985.Ic -depth , -follow , 986and 987.Ic -xdev . 988These primaries always evaluated to true. 989As they were really global variables that took effect before the traversal 990began, some legal expressions could have unexpected results. 991An example is the expression 992.Ic -print Cm -o Ic -depth . 993As 994.Ic -print 995always evaluates to true, the standard order of evaluation 996implies that 997.Ic -depth 998would never be evaluated. 999This is not the case. 1000.Pp 1001The operator 1002.Cm -or 1003was implemented as 1004.Cm -o , 1005and the operator 1006.Cm -and 1007was implemented as 1008.Cm -a . 1009.Pp 1010Historic implementations of the 1011.Ic -exec 1012and 1013.Ic -ok 1014primaries did not replace the string 1015.Dq Li {} 1016in the utility name or the 1017utility arguments if it had preceding or following non-whitespace characters. 1018This version replaces it no matter where in the utility name or arguments 1019it appears. 1020.Pp 1021The 1022.Fl E 1023option was inspired by the equivalent 1024.Xr grep 1 1025and 1026.Xr sed 1 1027options. 1028.Sh HISTORY 1029A 1030.Nm 1031command appeared in 1032.At v1 . 1033.Sh BUGS 1034The special characters used by 1035.Nm 1036are also special characters to many shell programs. 1037In particular, the characters 1038.Dq Li * , 1039.Dq Li \&[ , 1040.Dq Li \&] , 1041.Dq Li \&? , 1042.Dq Li \&( , 1043.Dq Li \&) , 1044.Dq Li \&! , 1045.Dq Li \e 1046and 1047.Dq Li \&; 1048may have to be escaped from the shell. 1049.Pp 1050As there is no delimiter separating options and file names or file 1051names and the 1052.Ar expression , 1053it is difficult to specify files named 1054.Pa -xdev 1055or 1056.Pa \&! . 1057These problems are handled by the 1058.Fl f 1059option and the 1060.Xr getopt 3 1061.Dq Fl Fl 1062construct. 1063.Pp 1064The 1065.Ic -delete 1066primary does not interact well with other options that cause the file system 1067tree traversal options to be changed. 1068.Pp 1069The 1070.Ic -mindepth 1071and 1072.Ic -maxdepth 1073primaries are actually global options (as documented above). 1074They should 1075probably be replaced by options which look like options. 1076