Annotation of 43BSDReno/usr.bin/find/find.1, revision 1.1.1.1

1.1       root        1: .\" Copyright (c) 1990 The Regents of the University of California.
                      2: .\" All rights reserved.
                      3: .\"
                      4: .\" Redistribution and use in source and binary forms are permitted provided
                      5: .\" that: (1) source distributions retain this entire copyright notice and
                      6: .\" comment, and (2) distributions including binaries display the following
                      7: .\" acknowledgement:  ``This product includes software developed by the
                      8: .\" University of California, Berkeley and its contributors'' in the
                      9: .\" documentation or other materials provided with the distribution and in
                     10: .\" all advertising materials mentioning features or use of this software.
                     11: .\" Neither the name of the University nor the names of its contributors may
                     12: .\" be used to endorse or promote products derived from this software without
                     13: .\" specific prior written permission.
                     14: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
                     15: .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
                     16: .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     17: .\"
                     18: .\"     @(#)find.1     6.15 (Berkeley) 7/24/90
                     19: .\"
                     20: .Dd July 24, 1990
                     21: .Dt FIND 1
                     22: .Os BSD 4.4
                     23: .Sh NAME
                     24: .Nm find
                     25: .Nd walk a file hierarchy
                     26: .Sh SYNOPSIS
                     27: .Nm find
                     28: .Op Fl dsx
                     29: .Op Ar path
                     30: .Ar expression
                     31: .Nm find
                     32: .Op Fl dsx
                     33: .Op Fl f Ar path
                     34: .Ar expression
                     35: .Sh DESCRIPTION
                     36: .Nm Find
                     37: recursively descends the directory tree for each
                     38: .Ar path
                     39: listed, evaluating an
                     40: .Ar expression
                     41: (composed of the ``primaries'' and ``operands'' listed below) in terms
                     42: of each file in the tree.
                     43: .Pp
                     44: The options are as follows:
                     45: .Pp
                     46: .Tw Ds
                     47: .Tp Fl d
                     48: The
                     49: .Fl d
                     50: option causes find to perform a depth\-first traversal, i.e. directories
                     51: are visited in post\-order and all entries in a directory will be acted
                     52: on before the directory itself.
                     53: By default,
                     54: .Nm find
                     55: visits directories in pre\-order, i.e. before their contents.
                     56: Note, the default is
                     57: .Ar not
                     58: a breadth\-first traversal.
                     59: .Tp Fl f
                     60: The
                     61: .Fl f
                     62: option specifies a file hierarchy for
                     63: .Nm find
                     64: to traverse.
                     65: If no
                     66: .Fl f
                     67: option is specified, the first operand after the options is
                     68: expected to be the file hierarchy to be traversed.
                     69: .Tp Fl s
                     70: The
                     71: .Fl s
                     72: option causes the file information and file type (see
                     73: .Xr stat  2  ) ,
                     74: returned for each symbolic link to be those of the file referenced by the
                     75: link, not the link itself.
                     76: If the referenced file does not exist, the file information and type will
                     77: be for the link itself.
                     78: .Tp Fl x
                     79: The
                     80: .Fl x
                     81: option prevents
                     82: .Nm find
                     83: from descending into directories that have a device number different
                     84: than that of the file from which the descent began.
                     85: .Tp
                     86: .Sh PRIMARIES
                     87: .Tw Ds
                     88: .Tp Cx Ic atime
                     89: .Cx \&\ \&
                     90: .Ar n
                     91: .Cx
                     92: True if the difference between the file last access time and the time
                     93: .Nm find
                     94: was started, rounded up to the next full 24\-hour period, is
                     95: .Ar n
                     96: 24\-hour periods.
                     97: .Tp Cx Ic ctime
                     98: .Cx \&\ \&
                     99: .Ar n
                    100: .Cx
                    101: True if the difference between the time of last change of file status
                    102: information and the time
                    103: .Nm find
                    104: was started, rounded up to the next full 24\-hour period, is
                    105: .Ar n
                    106: 24\-hour periods.
                    107: .Tp Cx Ic exec
                    108: .Cx \&\ \&
                    109: .Ar utility
                    110: .Cx \&\ \&
                    111: .Op argument ... ;
                    112: .Cx
                    113: True if the program named
                    114: .Ar utility
                    115: returns a zero value as its exit status.
                    116: Optional arguments may be passed to the utility.
                    117: The expression must be terminated by a semicolon (``;'').
                    118: If the string ``{}'' appears anywhere in the utility name or the
                    119: arguments it is replaced by the pathname of the current file.
                    120: Utility will be executed in the directory from which
                    121: .Nm find
                    122: was executed.
                    123: .Tp Cx Ic fstype
                    124: .Cx \&\ \&
                    125: .Ar type
                    126: .Cx
                    127: True if the file is contained in a file system of type
                    128: .Ar type .
                    129: Currently supported types are ``local'', ``mfs'', ``nfs'', ``pc'' and
                    130: ``ufs''.
                    131: The type ``local'' is not a specific file system type, but matches
                    132: any file system physically mounted on the system where the
                    133: .Nm find
                    134: is being executed.
                    135: .Tp Cx Ic group
                    136: .Cx \&\ \&
                    137: .Ar gname
                    138: .Cx
                    139: True if the file belongs to the group
                    140: .Ar gname  .
                    141: If
                    142: .Ar gname
                    143: is numeric and there is no such group name, then
                    144: .Ar gname
                    145: is treated as a group id.
                    146: .Tp Cx Ic inum
                    147: .Cx \&\ \&
                    148: .Ar n
                    149: .Cx
                    150: True if the file has inode number
                    151: .Ar n  .
                    152: .Tp Cx Ic links
                    153: .Cx \&\ \&
                    154: .Ar n
                    155: .Cx
                    156: True if the file has
                    157: .Ar n
                    158: links.
                    159: .Tp Ic ls
                    160: This primary always evaluates to true.
                    161: The following information for the current file is written to standard output:
                    162: its inode number, size in 512\-byte blocks, file permissions, number of hard
                    163: links, owner, group, size in bytes, last modification time, and pathname.
                    164: If the file is a block or character special file, the major and minor numbers
                    165: will be displayed instead of the size in bytes.
                    166: If the file is a symbolic link, the pathname of the linked\-to file will be
                    167: displayed preceded by ``\->''.
                    168: The format is identical to that produced by ``ls \-dgils''.
                    169: .Tp Cx Ic mtime
                    170: .Cx \&\ \&
                    171: .Ar n
                    172: .Cx
                    173: True if the difference between the file last modification time and the time
                    174: .Nm find
                    175: was started, rounded up to the next full 24\-hour period, is
                    176: .Ar n
                    177: 24\-hour periods.
                    178: .Tp Cx Ic \&ok
                    179: .Cx \&\ \&
                    180: .Ar utility
                    181: .Ws
                    182: .Op argument ... ;
                    183: .Cx
                    184: The
                    185: .Ic \&ok
                    186: primary is identical to the
                    187: .Ic exec
                    188: primary with the exception that
                    189: .Nm find
                    190: requests user affirmation for the execution of the utility by printing
                    191: a message to the terminal and reading a response.
                    192: If the response is other than ``y'' the command is not executed and the
                    193: value of the
                    194: .Ar \&ok
                    195: expression is false.
                    196: .Tp Cx Ic name
                    197: .Cx \&\ \&
                    198: .Ar pattern
                    199: .Cx
                    200: True if the last component of the pathname being examined matches
                    201: .Ar pattern  .
                    202: Special shell pattern matching characters (``['', ``]'', ``*'', and ``?'')
                    203: may be used as part of
                    204: .Ar pattern  .
                    205: These characters may be matched explicitly by escaping them with a
                    206: backslash (``\e'').
                    207: .Tp Cx Ic newer
                    208: .Cx \&\ \&
                    209: .Ar file
                    210: .Cx
                    211: True if the current file has a more recent last modification time than
                    212: .Ar file  .
                    213: .Tp Ic nouser
                    214: True if the file belongs to an unknown user.
                    215: .Tp Ic nogroup
                    216: True if the file belongs to an unknown group.
                    217: .Tp Cx Ic perm
                    218: .Cx \&\ \&
                    219: .Op Fl
                    220: .Ar mode
                    221: .Cx
                    222: The
                    223: .Ar mode
                    224: may be either symbolic (see
                    225: .Xr chmod  1  )
                    226: or an octal number.
                    227: If the mode is symbolic, a starting value of zero is assumed and the
                    228: mode sets or clears permissions without regard to the process' file mode
                    229: creation mask.
                    230: If the mode is octal, only bits 07777 of the file's mode bits participate
                    231: in the comparison.
                    232: If the mode is preceded by a dash (``\-''), this primary evaluates to true
                    233: if at least all of the bits in the mode are set in the file's mode bits.
                    234: If the mode is not preceded by a dash, this primary evaluates to true if
                    235: the bits in the mode exactly match the file's mode bits.
                    236: Note, the first character of a symbolic mode may not be a dash (``\-'').
                    237: .Tp Ic print
                    238: This primary always evaluates to true.
                    239: It prints the pathname of the current file to standard output.
                    240: The expression is appended to the user specified expression if neither
                    241: .Ic exec  ,
                    242: .Ic ls ,
                    243: or
                    244: .Ic \&ok
                    245: is specified.
                    246: .Tp Ic prune
                    247: This primary always evaluates to true.
                    248: It causes
                    249: .Nm find
                    250: to not descend into the current file.
                    251: .Tp Cx Ic size
                    252: .Cx \&\ \&
                    253: .Ar n
                    254: .Op Cm c
                    255: .Cx
                    256: True if the file's size, rounded up, in 512\-byte blocks is
                    257: .Ar n  .
                    258: If
                    259: .Ar n
                    260: is followed by a ``c'', then the primary is true if the
                    261: file's size is
                    262: .Ar n
                    263: bytes.
                    264: .Tp Cx Ic type
                    265: .Cx \&\ \&
                    266: .Ar t
                    267: .Cx
                    268: True if the file is of the specified type.
                    269: Possible file types are as follows:
                    270: .Pp
                    271: .Df I
                    272: .Tw Ds
                    273: .Tp Cm b
                    274: block special
                    275: .Tp Cm c
                    276: character special
                    277: .Tp Cm d
                    278: directory
                    279: .Tp Cm f
                    280: regular file
                    281: .Tp Cm l
                    282: symbolic link
                    283: .Tp Cm p
                    284: FIFO
                    285: .Tp Cm s
                    286: socket
                    287: .Tp
                    288: .De
                    289: .Pp
                    290: .Tp Cx Ic user
                    291: .Cx \&\ \&
                    292: .Ar uname
                    293: .Cx
                    294: True if the file belongs to the user
                    295: .Ar uname  .
                    296: If
                    297: .Ar uname
                    298: is numeric and there is no such user name, then
                    299: .Ar uname
                    300: is treated as a user id.
                    301: .Tp
                    302: .Pp
                    303: All primaries which take a numeric argument allow the number to be
                    304: preceded by a plus sign (``+'') or a minus sign (``\-'').
                    305: A preceding plus sign means ``more than
                    306: .Ar n  ' ' ,
                    307: a preceding minus sign means ``less than
                    308: .Ar n  ' '
                    309: and neither means ``exactly
                    310: .Ar n  ' ' .
                    311: .Sh OPERATORS
                    312: The primaries may be combined using the following operators.
                    313: The operators are listed in order of decreasing precedence.
                    314: .Di L
                    315: .Dp Cx Ic \&(
                    316: .Ar expression
                    317: .Cx \&)
                    318: .Cx
                    319: This evaluates to true if the parenthesized expression evaluates to
                    320: true.
                    321: .Pp
                    322: .Dp Cx Ic \&!
                    323: .Cx \&\ \&
                    324: .Ar expression
                    325: .Cx
                    326: This is the unary NOT operator.
                    327: It evaluates to true if the expression is false.
                    328: .Pp
                    329: .Dp Cx Ar expression
                    330: .Cx \&\ \&
                    331: .Ic and
                    332: .Cx \&\ \&
                    333: .Ar expression
                    334: .Cx
                    335: .Dp Cx Ar expression expression
                    336: .Cx
                    337: The
                    338: .Ic and
                    339: operator is the logical AND operator.
                    340: As it is implied by the juxtaposition of two expressions it does not
                    341: have to be specified.
                    342: The expression evaluates to true if both expressions are true.
                    343: The second expression is not evaluated if the first expression is false.
                    344: .Pp
                    345: .Dp Cx Ar expression
                    346: .Cx \&\ \&
                    347: .Ic or
                    348: .Cx \&\ \&
                    349: .Ar expression
                    350: .Cx
                    351: The
                    352: .Ic or
                    353: operator is the logical OR operator.
                    354: The expression evaluates to true if either the first or the second expression
                    355: is true.
                    356: The second expression is not evaluated if the first expression is true.
                    357: .Dp
                    358: .Pp
                    359: All operands and primaries must be separate arguments to
                    360: .Nm find  .
                    361: Primaries which themselves take arguments expect each argument
                    362: to be a separate argument to
                    363: .Nm find  .
                    364: .Sh EXAMPLES
                    365: .Pp
                    366: The following examples are shown as given to the shell:
                    367: .Tw findx
                    368: .Tp Li find  /  \e!  name  "*.c"  print
                    369: Print out a list of all the files whose names do not end in ``.c''.
                    370: .Tp Li find  /  newer  ttt  user  wnj  print
                    371: Print out a list of all the files owned by user ``wnj'' that are newer
                    372: than the file ``ttt''.
                    373: .Tp Li find  /  \e!  \e(  newer  ttt  user  wnj  \e)  print
                    374: Print out a list of all the files which are not both newer than ``ttt''
                    375: and owned by ``wnj''.
                    376: .Tp Li find  /  \e(  newer  ttt  or  user wnj  \e)  print
                    377: Print out a list of all the files that are either owned by ``wnj'' or
                    378: that are newer than ``ttt''.
                    379: .Tp
                    380: .Sh SEE ALSO
                    381: .Xr chmod 1 ,
                    382: .Xr sh 1 ,
                    383: .Xr test 1 ,
                    384: .Xr stat 2 ,
                    385: .Xr umask 2 ,
                    386: .Xr getpwent 3 ,
                    387: .Xr getgrent 3 ,
                    388: .Xr strmode 3
                    389: .Sh STANDARDS
                    390: The
                    391: .Nm find
                    392: utility syntax is a replacement for the syntax specified by the POSIX
                    393: 1003.2 standard.
                    394: The standard syntax is also supported; see the COMPATIBILITY section
                    395: below for details.
                    396: .Pp
                    397: The
                    398: .Fl s
                    399: option as well as the primaries
                    400: .Ic inum
                    401: and
                    402: .Ic ls
                    403: are extensions to the POSIX standard.
                    404: .Sh COMPATIBILITY
                    405: The traditional, and standardized, syntax for
                    406: .Nm find
                    407: is as follows.
                    408: All of the primaries are preceded by a dash (``\-''), i.e. the
                    409: primary ``group'' is specified as ``\-group''.
                    410: The
                    411: .Fl d  ,
                    412: .Fl s ,
                    413: and
                    414: .Fl x
                    415: options are implemented using the primaries ``\-depth'', ``\-follow'',
                    416: and ``\-xdev''.
                    417: These primaries always evaluate to true.
                    418: The operator ``or'' is implemented as ``\-o'', and the operator
                    419: ``and'' is implemented as ``\-a''.
                    420: The set of file trees to be traversed are specified as the first operands
                    421: to
                    422: .Nm find  .
                    423: The first operand beginning with a dash (``\-''), exclamation point (``!'')
                    424: or left parenthesis (``('') is assumed to be the beginning of the expression
                    425: and the end of the files to be traversed.
                    426: .Pp
                    427: The
                    428: .Nm find
                    429: syntax was changed for two reasons.
                    430: The first is that the ``\-depth'', ``\-follow'' and ``\-xdev'' primaries
                    431: are really global variables that take effect before the traversal begins.
                    432: This causes some legal expressions to have unexpected results.
                    433: An example is the expression ``\-print \-o \-depth''.
                    434: As \-print always evaluates to true, the standard order of evaluation
                    435: implies that \-depth would never be evaluated.
                    436: This is not the case.
                    437: .Pp
                    438: The second reason is that traversing file trees with names beginning with
                    439: a dash, exclamation point or left parenthesis was impossible.
                    440: .Sh BUGS
                    441: The special characters used by
                    442: .Nm find
                    443: are also special characters to many shell programs.
                    444: In particular, the characters ``*'', ``['', ``]'', ``?'', ``('', ``)'',
                    445: ``!'', ``\e'' and ``;'' may have to be escaped from the shell.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.