1 .\" 2 .\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for 3 .\" permission to reproduce portions of its copyrighted documentation. 4 .\" Original documentation from The Open Group can be obtained online at 5 .\" http://www.opengroup.org/bookstore/. 6 .\" 7 .\" The Institute of Electrical and Electronics Engineers and The Open 8 .\" Group, have given us permission to reprint portions of their 9 .\" documentation. 10 .\" 11 .\" In the following statement, the phrase ``this text'' refers to portions 12 .\" of the system documentation. 13 .\" 14 .\" Portions of this text are reprinted and reproduced in electronic form 15 .\" in the SunOS Reference Manual, from IEEE Std 1003.1, 2004 Edition, 16 .\" Standard for Information Technology -- Portable Operating System 17 .\" Interface (POSIX), The Open Group Base Specifications Issue 6, 18 .\" Copyright (C) 2001-2004 by the Institute of Electrical and Electronics 19 .\" Engineers, Inc and The Open Group. In the event of any discrepancy 20 .\" between these versions and the original IEEE and The Open Group 21 .\" Standard, the original IEEE and The Open Group Standard is the referee 22 .\" document. The original Standard can be obtained online at 23 .\" http://www.opengroup.org/unix/online.html. 24 .\" 25 .\" This notice shall appear on any product containing this material. 26 .\" 27 .\" The contents of this file are subject to the terms of the 28 .\" Common Development and Distribution License (the "License"). 29 .\" You may not use this file except in compliance with the License. 30 .\" 31 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 32 .\" or http://www.opensolaris.org/os/licensing. 33 .\" See the License for the specific language governing permissions 34 .\" and limitations under the License. 35 .\" 36 .\" When distributing Covered Code, include this CDDL HEADER in each 37 .\" file and include the License file at usr/src/OPENSOLARIS.LICENSE. 38 .\" If applicable, add the following below this CDDL HEADER, with the 39 .\" fields enclosed by brackets "[]" replaced with your own identifying 40 .\" information: Portions Copyright [yyyy] [name of copyright owner] 41 .\" 42 .\" 43 .\" Copyright 1989 AT&T 44 .\" Portions Copyright (c) 1992, X/Open Company Limited All Rights Reserved 45 .\" Copyright (c) 2008, Sun Microsystems, Inc. All Rights Reserved 46 .\" Copyright 2011 Nexenta Systems, Inc. All rights reserved. 47 .\" Copyright (c) 2013 Andrew Stormont. All rights reserved. 48 .\" Copyright 2020 Joyent, Inc. 49 .\" 50 .TH FIND 1 "Feb 20, 2020" 51 .SH NAME 52 find \- find files 53 .SH SYNOPSIS 54 .nf 55 \fB/usr/bin/find\fR [\fB-E\fR] [\fB-H\fR | \fB-L\fR] \fIpath\fR... \fIexpression\fR 56 .fi 57 58 .LP 59 .nf 60 \fB/usr/xpg4/bin/find\fR [\fB-H\fR | \fB-L\fR] \fIpath\fR... \fIexpression\fR 61 .fi 62 63 .SH DESCRIPTION 64 The \fBfind\fR utility recursively descends the directory hierarchy for each 65 \fIpath\fR seeking files that match a Boolean \fIexpression\fR written in the 66 primaries specified below. 67 .sp 68 .LP 69 \fBfind\fR is able to descend to arbitrary depths in a file hierarchy and does 70 not fail due to path length limitations (unless a \fIpath\fR operand specified 71 by the application exceeds \fIPATH_MAX\fR requirements). 72 .sp 73 .LP 74 \fBfind\fR detects infinite loops; that is, entering a previously visited 75 directory that is an ancestor of the last file encountered. 76 .SH OPTIONS 77 The following options are supported: 78 .sp 79 .ne 2 80 .na 81 \fB\fB-E\fR\fR 82 .ad 83 .RS 6n 84 Interpret regular expressions followed by \fB-regex\fR and \fB-iregex\fR 85 primaries as extended regular expressions. 86 .RE 87 88 .sp 89 .ne 2 90 .na 91 \fB\fB-H\fR\fR 92 .ad 93 .RS 6n 94 Causes the file information and file type evaluated for each symbolic link 95 encountered on the command line to be those of the file referenced by the link, 96 and not the link itself. If the referenced file does not exist, the file 97 information and type is for the link itself. File information for all symbolic 98 links not on the command line is that of the link itself. 99 .RE 100 101 .sp 102 .ne 2 103 .na 104 \fB\fB-L\fR\fR 105 .ad 106 .RS 6n 107 Causes the file information and file type evaluated for each symbolic link to 108 be those of the file referenced by the link, and not the link itself. See 109 \fBNOTES\fR. 110 .RE 111 112 .sp 113 .LP 114 Specifying more than one of the mutually-exclusive options \fB-H\fR and 115 \fB-L\fR is not considered an error. The last option specified determines the 116 behavior of the utility. 117 .SH OPERANDS 118 The following operands are supported: 119 .sp 120 .ne 2 121 .na 122 \fB\fIpath\fR\fR 123 .ad 124 .RS 14n 125 A pathname of a starting point in the directory hierarchy. 126 .RE 127 128 .sp 129 .ne 2 130 .na 131 \fB\fIexpression\fR\fR 132 .ad 133 .RS 14n 134 The first argument that starts with a \fB\(mi\fR, or is a \fB!\fR or a \fB(\fR, 135 and all subsequent arguments are interpreted as an \fIexpression\fR made up of 136 the following primaries and operators. In the descriptions, wherever \fIn\fR is 137 used as a primary argument, it is interpreted as a decimal integer optionally 138 preceded by a plus (\fB+\fR) or minus (\fB\(mi\fR) sign, as follows: 139 .sp 140 .ne 2 141 .na 142 \fB+\fIn\fR\fR 143 .ad 144 .RS 6n 145 more than \fIn\fR 146 .RE 147 148 .sp 149 .ne 2 150 .na 151 \fB\fIn\fR\fR 152 .ad 153 .RS 6n 154 exactly \fIn\fR 155 .RE 156 157 .sp 158 .ne 2 159 .na 160 \fB-\fIn\fR\fR 161 .ad 162 .RS 6n 163 less than \fIn\fR 164 .RE 165 166 .RE 167 168 .SS "Expressions" 169 Valid expressions are: 170 .sp 171 .ne 2 172 .na 173 \fB\fB-acl\fR\fR 174 .ad 175 .RS 17n 176 True if the file have additional ACLs defined. 177 .RE 178 179 .sp 180 .ne 2 181 .na 182 \fB\fB-amin\fR \fIn\fR\fR 183 .ad 184 .RS 17n 185 File was last accessed \fIn\fR minutes ago. 186 .RE 187 188 .sp 189 .ne 2 190 .na 191 \fB\fB-atime\fR \fIn\fR\fR 192 .ad 193 .RS 17n 194 True if the file was accessed \fIn\fR days ago. The access time of directories 195 in \fIpath\fR is changed by \fBfind\fR itself. 196 .RE 197 198 .sp 199 .ne 2 200 .na 201 \fB\fB-cmin\fR \fIn\fR\fR 202 .ad 203 .RS 17n 204 File's status was last changed \fIn\fR minutes ago. 205 .RE 206 207 .sp 208 .ne 2 209 .na 210 \fB\fB-cpio\fR \fIdevice\fR\fR 211 .ad 212 .RS 17n 213 Always true. Writes the current file on \fIdevice\fR in \fBcpio\fR format 214 (5120-byte records). 215 .RE 216 217 .sp 218 .ne 2 219 .na 220 \fB\fB-ctime\fR \fIn\fR\fR 221 .ad 222 .RS 17n 223 True if the file's status was changed \fIn\fR days ago. 224 .RE 225 226 .sp 227 .ne 2 228 .na 229 \fB\fB-depth\fR\fR 230 .ad 231 .RS 17n 232 Always true. Causes descent of the directory hierarchy to be done so that all 233 entries in a directory are acted on before the directory itself. This can be 234 useful when \fBfind\fR is used with \fBcpio\fR(1) to transfer files that are 235 contained in directories without write permission. 236 .RE 237 238 .sp 239 .ne 2 240 .na 241 \fB\fB-exec\fR \fIcommand\fR\fR 242 .ad 243 .RS 17n 244 True if the executed command returns a zero value as exit status. The end of 245 command must be punctuated by an escaped semicolon (\fB;\fR). A command 246 argument \fB{}\fR is replaced by the current pathname. If the last argument to 247 \fB-exec\fR is \fB{}\fR and you specify \fB+\fR rather than the semicolon 248 (\fB;\fR), the command is invoked fewer times, with \fB{}\fR replaced by groups 249 of pathnames. If any invocation of the command returns a non-zero value as exit 250 status, find returns a non-zero exit status. 251 .RE 252 253 .sp 254 .ne 2 255 .na 256 \fB\fB-follow\fR\fR 257 .ad 258 .RS 17n 259 Always true and always evaluated no matter where it appears in 260 \fIexpression\fR. The behavior is unspecified if \fB-follow\fR is used when the 261 \fBfind\fR command is invoked with either the \fB-H\fR or the \fB-L\fR option. 262 Causes symbolic links to be followed. When following symbolic links, \fBfind\fR 263 keeps track of the directories visited so that it can detect infinite loops. 264 For example, such a loop would occur if a symbolic link pointed to an ancestor. 265 This expression should not be used with the find-type \fBl\fR expression. See 266 \fBNOTES\fR. 267 .RE 268 269 .sp 270 .ne 2 271 .na 272 \fB\fB-fstype\fR \fItype\fR\fR 273 .ad 274 .RS 17n 275 True if the filesystem to which the file belongs is of type \fItype\fR. 276 .RE 277 278 .sp 279 .ne 2 280 .na 281 \fB\fB-group\fR \fIgname\fR\fR 282 .ad 283 .RS 17n 284 True if the file belongs to the group \fIgname\fR. If \fIgname\fR is numeric 285 and there's no such group name, it is taken as a group \fBID\fR. 286 .RE 287 288 .sp 289 .ne 2 290 .na 291 \fB\fB-groupacl\fR \fIgname\fR\fR 292 .ad 293 .RS 17n 294 True if the file's ACL contains an entry for the group \fIgname\fR. 295 If \fIgname\fR is numeric and there's no such group name, it is taken 296 as a group \fBID\fR. 297 .RE 298 299 .sp 300 .ne 2 301 .na 302 \fB\fB-iname\fR \fIpattern\fR\fR 303 .ad 304 .RS 17n 305 Like \fB-name\fR, but the match is case insensitive. 306 .RE 307 308 .sp 309 .ne 2 310 .na 311 \fB\fB-inum\fR \fIn\fR\fR 312 .ad 313 .RS 17n 314 True if the file has inode number \fIn\fR. 315 .RE 316 317 .sp 318 .ne 2 319 .na 320 \fB\fB-ipath\fR \fIpattern\fR\fR 321 .ad 322 .RS 17n 323 Like \fB-path\fR, but the match is case insensitive. 324 .RE 325 326 .sp 327 .ne 2 328 .na 329 \fB\fB-iregex\fR \fIpattern\fR\fR 330 .ad 331 .RS 17n 332 Like \fB-regex\fR, but the match is case insensitive. 333 .RE 334 335 .sp 336 .ne 2 337 .na 338 \fB\fB-links\fR \fIn\fR\fR 339 .ad 340 .RS 17n 341 True if the file has \fIn\fR links. 342 .RE 343 344 .sp 345 .ne 2 346 .na 347 \fB\fB-local\fR\fR 348 .ad 349 .RS 17n 350 True if the file system type is not a remote file system type as defined in the 351 \fB/etc/dfs/fstypes\fR file. \fBnfs\fR is used as the default remote filesystem 352 type if the \fB/etc/dfs/fstypes\fR file is not present. The \fB-local\fR option 353 descends the hierarchy of non-local directories. See \fBEXAMPLES\fR for an 354 example of how to search for local files without descending. 355 .RE 356 357 .sp 358 .ne 2 359 .na 360 \fB\fB-ls\fR\fR 361 .ad 362 .RS 17n 363 Always true. Prints current pathname together with its associated statistics. 364 These include (respectively): 365 .RS +4 366 .TP 367 .ie t \(bu 368 .el o 369 inode number 370 .RE 371 .RS +4 372 .TP 373 .ie t \(bu 374 .el o 375 size in kilobytes (1024 bytes) 376 .RE 377 .RS +4 378 .TP 379 .ie t \(bu 380 .el o 381 protection mode 382 .RE 383 .RS +4 384 .TP 385 .ie t \(bu 386 .el o 387 number of hard links 388 .RE 389 .RS +4 390 .TP 391 .ie t \(bu 392 .el o 393 user 394 .RE 395 .RS +4 396 .TP 397 .ie t \(bu 398 .el o 399 group 400 .RE 401 .RS +4 402 .TP 403 .ie t \(bu 404 .el o 405 size in bytes 406 .RE 407 .RS +4 408 .TP 409 .ie t \(bu 410 .el o 411 modification time. 412 .RE 413 If the file is a special file, the size field instead contains the major and 414 minor device numbers. 415 .sp 416 If the file is a symbolic link, the pathname of the linked-to file is printed 417 preceded by `\fB\(->\fR\&'. The format is identical to that of \fBls\fR 418 \fB-gilds\fR (see \fBls\fR(1B)). 419 .sp 420 Formatting is done internally, without executing the \fBls\fR program. 421 .RE 422 423 .sp 424 .ne 2 425 .na 426 \fB\fB-maxdepth\fR \fIn\fR\fR 427 .ad 428 .RS 17n 429 Always true; descend at most \fIn\fR directory levels below the command 430 line arguments. If any \fB-maxdepth\fR primary is specified, it 431 applies to the entire expression even if it would not normally be 432 evaluated. \fB-maxdepth 0\fR limits the whole search to 433 the command line arguments. 434 .RE 435 436 .sp 437 .ne 2 438 .na 439 \fB\fB-mindepth\fR \fIn\fR\fR 440 .ad 441 .RS 17n 442 Always true; do not apply any tests or actions at levels less 443 than \fIn\fR. If any \fB-mindepth\fR primary is specified, it applies to the 444 entire expression even if it would not normally be evaluated. 445 \fB-mindepth 1\fR processes all but the command line arguments. 446 .RE 447 448 .sp 449 .ne 2 450 .na 451 \fB\fB-mmin\fR \fIn\fR\fR 452 .ad 453 .RS 17n 454 File's data was last modified \fIn\fR minutes ago. 455 .RE 456 457 .sp 458 .ne 2 459 .na 460 \fB\fB-mount\fR\fR 461 .ad 462 .RS 17n 463 Always true. Restricts the search to the file system containing the directory 464 specified. Does not list mount points to other file systems. 465 .RE 466 467 .sp 468 .ne 2 469 .na 470 \fB\fB-mtime\fR \fIn\fR\fR 471 .ad 472 .RS 17n 473 True if the file's data was modified \fIn\fR days ago. 474 .RE 475 476 .sp 477 .ne 2 478 .na 479 \fB\fB-name\fR \fIpattern\fR\fR 480 .ad 481 .RS 17n 482 True if \fIpattern\fR matches the basename of the current file name. Normal 483 shell file name generation characters (see \fBsh\fR(1)) can be used. A 484 backslash (\fB\|\e\|\fR) is used as an escape character within the pattern. The 485 pattern should be escaped or quoted when \fBfind\fR is invoked from the shell. 486 .sp 487 Unless the character '\fB\&.\fR' is explicitly specified in the beginning of 488 \fIpattern\fR, a current file name beginning with '\fB\&.\fR' does not match 489 \fIpattern\fR when using \fB/usr/bin/find\fR. \fB/usr/xpg4/bin/find\fR does not 490 make this distinction; wildcard file name generation characters can match file 491 names beginning with '\fB\&.\fR'. 492 .RE 493 494 .sp 495 .ne 2 496 .na 497 \fB\fB-ncpio\fR \fIdevice\fR\fR 498 .ad 499 .RS 17n 500 Always true. Writes the current file on \fIdevice\fR in \fBcpio\fR \fB-c\fR 501 format (5120 byte records). 502 .RE 503 504 .sp 505 .ne 2 506 .na 507 \fB\fB-newer\fR \fIfile\fR\fR 508 .ad 509 .RS 17n 510 True if the current file has been modified more recently than the argument 511 \fIfile\fR. 512 .RE 513 514 .sp 515 .ne 2 516 .na 517 \fB\fB-nogroup\fR\fR 518 .ad 519 .RS 17n 520 True if the file belongs to non-existing group. 521 .RE 522 523 .sp 524 .ne 2 525 .na 526 \fB\fB-nouser\fR\fR 527 .ad 528 .RS 17n 529 True if the file belongs to non-existing user. 530 .RE 531 532 .sp 533 .ne 2 534 .na 535 \fB\fB-ok\fR \fIcommand\fR\fR 536 .ad 537 .RS 17n 538 Like \fB-exec\fR, except that the generated command line is printed with a 539 question mark first, and is executed only if the response is affirmative. 540 .RE 541 542 .sp 543 .ne 2 544 .na 545 \fB\fB-path\fR\fR 546 .ad 547 .RS 17n 548 Like \fB-name\fR, but matches the entire file path and not just basename, and 549 without any special treatment of leading periods. 550 .RE 551 552 .sp 553 .ne 2 554 .na 555 \fB\fB-perm\fR [\fB-\fR]\fImode\fR\fR 556 .ad 557 .RS 17n 558 The \fImode\fR argument is used to represent file mode bits. It is identical in 559 format to the symbolic mode operand, \fIsymbolic_mode_list\fR, described in 560 \fBchmod\fR(1), and is interpreted as follows. To start, a template is assumed 561 with all file mode bits cleared. An \fIop\fR symbol of: 562 .sp 563 .ne 2 564 .na 565 \fB\fB+\fR\fR 566 .ad 567 .RS 8n 568 Set the appropriate mode bits in the template 569 .RE 570 571 .sp 572 .ne 2 573 .na 574 \fB\fB\(mi\fR\fR 575 .ad 576 .RS 8n 577 Clear the appropriate bits 578 .RE 579 580 .sp 581 .ne 2 582 .na 583 \fB\fB=\fR\fR 584 .ad 585 .RS 8n 586 Set the appropriate mode bits, without regard to the contents of the file mode 587 creation mask of the process 588 .RE 589 590 The \fIop\fR symbol of \fB\(mi\fR cannot be the first character of \fImode\fR, 591 to avoid ambiguity with the optional leading hyphen. Since the initial mode is 592 all bits off, there are no symbolic modes that need to use \fB\(mi\fR as the 593 first character. 594 .sp 595 If the hyphen is omitted, the primary evaluates as true when the file 596 permission bits exactly match the value of the resulting template. 597 .sp 598 Otherwise, if \fImode\fR is prefixed by a hyphen, the primary evaluates as true 599 if at least all the bits in the resulting template are set in the file 600 permission bits. 601 .RE 602 603 .sp 604 .ne 2 605 .na 606 \fB\fB-perm\fR [\fB-\fR]\fIonum\fR\fR 607 .ad 608 .RS 17n 609 True if the file permission flags exactly match the octal number \fIonum\fR 610 (see \fBchmod\fR(1)). If \fIonum\fR is prefixed by a minus sign (\fB\(mi\fR), 611 only the bits that are set in \fIonum\fR are compared with the file permission 612 flags, and the expression evaluates true if they match. 613 .RE 614 615 .sp 616 .ne 2 617 .na 618 \fB\fB-print\fR\fR 619 .ad 620 .RS 17n 621 Always true. Causes the current pathname to be printed. 622 .RE 623 624 .sp 625 .ne 2 626 .na 627 \fB\fB-print0\fR\fR 628 .ad 629 .RS 17n 630 Always true. Causes the current pathname to be printed, terminated by an ASCII 631 NUL character (character code 0) instead of a newline. 632 .RE 633 634 .sp 635 .ne 2 636 .na 637 \fB\fB-prune\fR\fR 638 .ad 639 .RS 17n 640 Always yields true. Does not examine any directories or files in the directory 641 structure below the \fIpattern\fR just matched. (See EXAMPLES). If \fB-depth\fR 642 is specified, \fB-prune\fR has no effect. 643 .RE 644 645 .sp 646 .ne 2 647 .na 648 \fB\fB-regex\fR \fIpattern\fR\fB 649 .ad 650 .RS 17n 651 True if the full path of the file matches \fIpattern\fR using regular 652 expressions. 653 .RE 654 655 .sp 656 .ne 2 657 .na 658 \fB\fB-size\fR \fIn\fR[\fBc\fR]\fR 659 .ad 660 .RS 17n 661 True if the file is \fIn\fR blocks long (512 bytes per block). If \fIn\fR is 662 followed by a \fBc\fR, the size is in bytes. 663 .RE 664 665 .sp 666 .ne 2 667 .na 668 \fB\fB-type\fR \fIc\fR\fR 669 .ad 670 .RS 17n 671 True if the type of the file is \fIc\fR, where \fIc\fR is \fBb\fR, \fBc\fR, 672 \fBd\fR, \fBD\fR, \fBf\fR, \fBl\fR, \fBp\fR, or \fBs\fR for block special file, 673 character special file, directory, door, plain file, symbolic link, fifo (named 674 pipe), or socket, respectively. 675 .RE 676 677 .sp 678 .ne 2 679 .na 680 \fB\fB-user\fR \fIuname\fR\fR 681 .ad 682 .RS 17n 683 True if the file belongs to the user \fIuname\fR. If \fIuname\fR is numeric and 684 there's no such user name, it is taken as a user \fBID\fR. 685 .RE 686 687 .sp 688 .ne 2 689 .na 690 \fB\fB-useracl\fR \fIuname\fR\fR 691 .ad 692 .RS 17n 693 True if the file's ACL contains an entry for the user \fIuname\fR. 694 If \fIuname\fR is numeric and there's no such user name, it is 695 taken as a user \fBID\fR. 696 .RE 697 698 .sp 699 .ne 2 700 .na 701 \fB\fB-xdev\fR\fR 702 .ad 703 .RS 17n 704 Same as the \fB-mount\fR primary. 705 .RE 706 707 .sp 708 .ne 2 709 .na 710 \fB\fB-xattr\fR\fR 711 .ad 712 .RS 17n 713 True if the file has extended attributes. 714 .RE 715 716 .SS "Complex Expressions" 717 The primaries can be combined using the following operators (in order of 718 decreasing precedence): 719 .sp 720 .ne 2 721 .na 722 \fB1)\fB(\fR\fIexpression\fR\fB)\fR\fR 723 .ad 724 .sp .6 725 .RS 4n 726 True if the parenthesized expression is true (parentheses are special to the 727 shell and must be escaped). 728 .RE 729 730 .sp 731 .ne 2 732 .na 733 \fB2)\fB!\fR\fIexpression\fR\fR 734 .ad 735 .sp .6 736 .RS 4n 737 The negation of a primary (\fB!\fR is the unary \fInot\fR operator). 738 .RE 739 740 .sp 741 .ne 2 742 .na 743 \fB3) \fIexpression\fR\fB[\fR\fB-a\fR\fB]\fR \fIexpression\fR\fR 744 .ad 745 .sp .6 746 .RS 4n 747 Concatenation of primaries (the \fIand\fR operation is implied by the 748 juxtaposition of two primaries). 749 .RE 750 751 .sp 752 .ne 2 753 .na 754 \fB4) \fIexpression\fR\fB\fR\fB-o\fR\fIexpression\fR\fR 755 .ad 756 .sp .6 757 .RS 4n 758 Alternation of primaries (\fB-o\fR is the \fIor\fR operator). 759 .RE 760 761 .sp 762 .LP 763 When you use \fBfind\fR in conjunction with \fBcpio\fR, if you use the \fB-L\fR 764 option with \fBcpio\fR, you must use the \fB-L\fR option or the \fB-follow\fR 765 primitive with \fBfind\fR and vice versa. Otherwise the results are 766 unspecified. 767 .sp 768 .LP 769 If no \fIexpression\fR is present, \fB-print\fR is used as the expression. 770 Otherwise, if the specified expression does not contain any of the primaries 771 \fB-exec\fR, \fB-ok\fR, \fB-ls\fR, or \fB-print\fR, the specified expression is 772 effectively replaced by: 773 .sp 774 .LP 775 (\fIspecified\fR) \fB-print\fR 776 .sp 777 .LP 778 The \fB-user\fR, \fB-group\fR, and \fB-newer\fR primaries each evaluate their 779 respective arguments only once. Invocation of \fIcommand\fR specified by 780 \fB-exec\fR or \fB-ok\fR does not affect subsequent primaries on the same file. 781 .SH USAGE 782 See \fBlargefile\fR(5) for the description of the behavior of \fBfind\fR when 783 encountering files greater than or equal to 2 Gbyte (2^31 bytes). 784 .SH EXAMPLES 785 \fBExample 1 \fRWriting Out the Hierarchy Directory 786 .sp 787 .LP 788 The following commands are equivalent: 789 790 .sp 791 .in +2 792 .nf 793 example% \fBfind .\fR 794 example% \fBfind . -print\fR 795 .fi 796 .in -2 797 .sp 798 799 .sp 800 .LP 801 They both write out the entire directory hierarchy from the current directory. 802 803 .LP 804 \fBExample 2 \fRRemoving Files 805 .sp 806 .LP 807 The following command removes all files in your home directory named \fBa.out\fR 808 or \fB*.o\fR that have not been accessed for a week: 809 810 .sp 811 .in +2 812 .nf 813 example% \fBfind $HOME \e( -name a.out -o -name '*.o' \e) \e 814 -atime +7 -exec rm {} \e;\fR 815 .fi 816 .in -2 817 .sp 818 819 .LP 820 \fBExample 3 \fRPrinting All File Names But Skipping SCCS Directories 821 .sp 822 .LP 823 The following command recursively print all file names in the current directory 824 and below, but skipping \fBSCCS\fR directories: 825 826 .sp 827 .in +2 828 .nf 829 example% \fBfind . -name SCCS -prune -o -print\fR 830 .fi 831 .in -2 832 .sp 833 834 .LP 835 \fBExample 4 \fRPrinting all file names and the SCCS directory name 836 .sp 837 .LP 838 Recursively print all file names in the current directory and below, skipping 839 the contents of \fBSCCS\fR directories, but printing out the \fBSCCS\fR 840 directory name: 841 842 .sp 843 .in +2 844 .nf 845 example% \fBfind . -print -name SCCS -prune\fR 846 .fi 847 .in -2 848 .sp 849 850 .LP 851 \fBExample 5 \fRTesting for the Newer File 852 .sp 853 .LP 854 The following command is basically equivalent to the \fB-nt\fR extension to 855 \fBtest\fR(1): 856 857 .sp 858 .in +2 859 .nf 860 example$ \fBif [ -n "$(find 861 file1 -prune -newer file2)" ]; then 862 863 printf %s\e\en "file1 is newer than file2"\fR 864 .fi 865 .in -2 866 .sp 867 868 .LP 869 \fBExample 6 \fRSelecting a File Using 24-hour Mode 870 .sp 871 .LP 872 The descriptions of \fB-atime\fR, \fB-ctime\fR, and \fB-mtime\fR use the 873 terminology \fIn\fR ``24-hour periods''. For example, a file accessed at 23:59 874 is selected by: 875 876 .sp 877 .in +2 878 .nf 879 example% \fBfind . -atime -1 -print\fR 880 .fi 881 .in -2 882 .sp 883 884 .sp 885 .LP 886 at 00:01 the next day (less than 24 hours later, not more than one day ago). 887 The midnight boundary between days has no effect on the 24-hour calculation. 888 889 .LP 890 \fBExample 7 \fRPrinting Files Matching a User's Permission Mode 891 .sp 892 .LP 893 The following command recursively print all file names whose permission mode 894 exactly matches read, write, and execute access for user, and read and execute 895 access for group and other: 896 897 .sp 898 .in +2 899 .nf 900 example% \fBfind . -perm u=rwx,g=rx,o=rx\fR 901 .fi 902 .in -2 903 .sp 904 905 .sp 906 .LP 907 The above could alternatively be specified as follows: 908 909 .sp 910 .in +2 911 .nf 912 example% \fBfind . -perm a=rwx,g-w,o-w\fR 913 .fi 914 .in -2 915 .sp 916 917 .LP 918 \fBExample 8 \fRPrinting Files with Write Access for \fBother\fR 919 .sp 920 .LP 921 The following command recursively print all file names whose permission 922 includes, but is not limited to, write access for other: 923 924 .sp 925 .in +2 926 .nf 927 example% \fBfind . -perm -o+w\fR 928 .fi 929 .in -2 930 .sp 931 932 .LP 933 \fBExample 9 \fRPrinting Local Files without Descending Non-local Directories 934 .sp 935 .in +2 936 .nf 937 example% \fBfind . ! -local -prune -o -print\fR 938 .fi 939 .in -2 940 .sp 941 942 .LP 943 \fBExample 10 \fRPrinting the Files in the Name Space Possessing Extended 944 Attributes 945 .sp 946 .in +2 947 .nf 948 example% \fBfind . -xattr\fR 949 .fi 950 .in -2 951 .sp 952 953 .SH ENVIRONMENT VARIABLES 954 See \fBenviron\fR(5) for descriptions of the following environment variables 955 that affect the execution of \fBfind\fR: \fBLANG\fR, \fBLC_ALL\fR, 956 \fBLC_COLLATE\fR, \fBLC_CTYPE\fR, \fBLC_MESSAGES\fR, and \fBNLSPATH\fR. 957 .sp 958 .ne 2 959 .na 960 \fB\fBPATH\fR\fR 961 .ad 962 .RS 8n 963 Determine the location of the \fIutility_name\fR for the \fB-exec\fR and 964 \fB-ok\fR primaries. 965 .RE 966 967 .sp 968 .LP 969 Affirmative responses are processed using the extended regular expression 970 defined for the \fByesexpr\fR keyword in the \fBLC_MESSAGES\fR category of the 971 user's locale. The locale specified in the \fBLC_COLLATE\fR category defines 972 the behavior of ranges, equivalence classes, and multi-character collating 973 elements used in the expression defined for \fByesexpr\fR. The locale specified 974 in \fBLC_CTYPE\fR determines the locale for interpretation of sequences of 975 bytes of text data a characters, the behavior of character classes used in the 976 expression defined for the \fByesexpr\fR. See \fBlocale\fR(5). 977 .SH EXIT STATUS 978 The following exit values are returned: 979 .sp 980 .ne 2 981 .na 982 \fB\fB0\fR\fR 983 .ad 984 .RS 6n 985 All \fIpath\fR operands were traversed successfully. 986 .RE 987 988 .sp 989 .ne 2 990 .na 991 \fB\fB>0\fR\fR 992 .ad 993 .RS 6n 994 An error occurred. 995 .RE 996 997 .SH FILES 998 .ne 2 999 .na 1000 \fB\fB/etc/passwd\fR\fR 1001 .ad 1002 .RS 20n 1003 Password file 1004 .RE 1005 1006 .sp 1007 .ne 2 1008 .na 1009 \fB\fB/etc/group\fR\fR 1010 .ad 1011 .RS 20n 1012 Group file 1013 .RE 1014 1015 .sp 1016 .ne 2 1017 .na 1018 \fB\fB/etc/dfs/fstypes\fR\fR 1019 .ad 1020 .RS 20n 1021 File that registers distributed file system packages 1022 .RE 1023 1024 .SH ATTRIBUTES 1025 See \fBattributes\fR(5) for descriptions of the following attributes: 1026 .sp 1027 1028 .sp 1029 .TS 1030 box; 1031 c | c 1032 l | l . 1033 ATTRIBUTE TYPE ATTRIBUTE VALUE 1034 _ 1035 CSI Enabled 1036 _ 1037 Interface Stability Committed 1038 _ 1039 Standard See \fBstandards\fR(5). 1040 .TE 1041 1042 .SH SEE ALSO 1043 \fBchmod\fR(1), \fBcpio\fR(1), \fBsh\fR(1), \fBtest\fR(1), \fBls\fR(1B), 1044 \fBacl\fR(5), \fBregex\fR(5), \fBstat\fR(2), \fBumask\fR(2), 1045 \fBattributes\fR(5), \fBenviron\fR(5), \fBfsattr\fR(5), \fBlargefile\fR(5), 1046 \fBlocale\fR(5), \fBstandards\fR(5) 1047 .SH WARNINGS 1048 The following options are obsolete and will not be supported in future 1049 releases: 1050 .sp 1051 .ne 2 1052 .na 1053 \fB\fB-cpio\fR \fIdevice\fR\fR 1054 .ad 1055 .RS 17n 1056 Always true. Writes the current file on \fIdevice\fR in \fBcpio\fR format 1057 (5120-byte records). 1058 .RE 1059 1060 .sp 1061 .ne 2 1062 .na 1063 \fB\fB-ncpio\fR \fIdevice\fR\fR 1064 .ad 1065 .RS 17n 1066 Always true. Writes the current file on \fIdevice\fR in \fBcpio\fR \fB-c\fR 1067 format (5120-byte records). 1068 .RE 1069 1070 .SH NOTES 1071 When using \fBfind\fR to determine files modified within a range of time, use 1072 the \fB-mtime\fR argument \fBbefore\fR the \fB-print\fR argument. Otherwise, 1073 \fBfind\fR gives all files. 1074 .sp 1075 .LP 1076 Some files that might be under the Solaris root file system are actually mount 1077 points for virtual file systems, such as \fBmntfs\fR or \fBnamefs\fR. When 1078 comparing against a \fBufs\fR file system, such files are not selected if 1079 \fB-mount\fR or \fB-xdev\fR is specified in the \fBfind\fR expression. 1080 .sp 1081 .LP 1082 Using the \fB-L\fR or \fB-follow\fR option is not recommended when descending a 1083 file-system hierarchy that is under the control of other users. In particular, 1084 when using \fB-exec\fR, symbolic links can lead the \fBfind\fR command out of 1085 the hierarchy in which it started. Using \fB-type\fR is not sufficient to 1086 restrict the type of files on which the \fB-exec\fR command operates, because 1087 there is an inherent race condition between the type-check performed by the 1088 \fBfind\fR command and the time the executed command operates on the file 1089 argument.