Skip Headers
Oracle Hierarchical Storage Manager and QFS Software Command Reference
Section 1: User Commands
Release 6.1.1
E70305-03

NAME

sfind - Searches for files in a directory hierarchy

SYNOPSIS

sfind [path …] [expression]

AVAILABILITY

SUNWqfs

SUNWsamfs

DESCRIPTION

The sfind (1) command contains Oracle extensions to the GNU find (1) command. The extensions support the features of files that reside in StorageTek QFS or Oracle HSM file systems.

The sfind command searches the directory tree rooted at each path by evaluating the specified expression from left to right, according to the rules of precedence. The search continues until the outcome is known (the left hand side is false for and operations, true for or), at which point the sfind command moves on to the next file name. For more information on the rules of precedence, see the OPERATORS section of this man page.

The Oracle extensions to this command include the addition of several tests that reference characteristics specific to files that reside in a StorageTek QFS or Oracle HSM file system. These tests are as follows:

-admin_id n, -any_copy_archive_i, -any_copy_d, -any_copy_r, -any_copy_s, -any_copy_u, -any_copy_v, -archdone, -archive_C, -archive_d, -archive_I, -archive_n, -archived, -archpos n, -archpos1 n, -archpos2 n, -archpos3 n, -archpos4 n, -copies n, -copy n, -copy_archive_i n, -copy_d n, -copy_r n, -copy_s n, -copy_u n, -copy_v n, -damaged, -is_setfa_D, -is_setfa_g, -is_setfa_s, -mt media_type, -mt1 media_type, -mt2 media_type, -mt3 media_type, -mt4 media_type, -offline, -online, -ovfl, -ovfl1, -ovfl2, -ovfl3, -ovfl4, -partial_on, -project pname, -release_a, -release_d, -release_n, -release_p, -rmedia, -rmin n, -rtime n, -sections n, -sections1 n, -sections2 n, -sections3 n, -sections4 n, -segment n, -segment_a, -segment_i, -segment_s, -segmented, -segments n, -setfa_g n, -setfa_s n, -ssum_algo n, -ssum_F, -ssum_g, -ssum_u, -ssum_v, -stage_a, -stage_d, -stage_n, -verify, -vsn pattern, -vsn1 pattern, -vsn2 pattern, -vsn3 pattern, -vsn4 pattern, -xmin n, -xtime n.

For a comprehensive lists of tests, see the TESTS section of this man page.

This command accepts the following options:

path

Specifies the path to the directory to be searched. If no path is specified, the sfind command searches the current directory. If a path is specified, the path must appear on the command line to the left of the expression argument. If specifying more than one path, separate each with a space character.

expression

An expression composed from arguments described in the OPTIONS, TESTS, ACTIONS, and OPERATORS sections of this man page. If no expression is specified, -print is used.

The expression must begin with one of the following characters:

- A dash (-)
- An opening parenthesis (()
- A closing parenthesis ())
- A comma (,)
- An exclamation point (!)

Any arguments to the left of the preceding character list are assumed to be paths to search. Any arguments to the right of the preceding character list are assumed to be part of the expression.

An expression can be constructed from the following:

  • Options, which affect overall operation rather than the processing of a specific file. Options always return true. For a list of possible options, see the OPTIONS section.

  • Tests, which return a true or false value. For a list of possible tests, see the TESTS section.

  • Actions, which have side effects. Actions return a true or false value. If expression contains no actions other than -prune, the -print action is performed on all files for which the expression is true. For a list of possible actions, see the ACTIONS section.

  • Operators, which separate options, tests, and actions. For a list of possible operators, see the OPERATORS section. The -and operator is assumed if no operator is specified.

    OPTIONS

    An expression can contain one or more options. The options always return true. The available options are as follows:

option

Action

-daystart

Measures times for -amin, -atime, -cmin, -ctime, -mmin, and -mtime from the beginning of today rather than from 24 hours ago.

-depth

Processes each directory's contents before the directory itself.

-follow

Dereferences symbolic links. Implies the -noleaf option. For more information, see the -noleaf information that follows in this list.

-maxdepth levels

Descends at most levels levels of directories below the command line arguments. The levels argument muse be a nonnegative integer. If you specify -maxdepth 0, the tests and actions are applied to the command line arguments only. For more information, see the TESTS and ACTIONS sections of this man page.

-mindepth levels

Prevents any tests or actions from being performed at levels less than levels. The levels argument must be a nonnegative integer. If you specify -mindepth 1, all files except the command line arguments are processed. For more information, see the TESTS and ACTIONS sections of this man page.

-noleaf

Supresses optimization. When specified, the command does not assume that directories contain 2 fewer subdirectories than their hard link count. This option is needed when searching file systems that do not follow the UNIX directory-link convention. Such file systems include CD-ROM or MS-DOS file systems or AFS volume mount points.

Each directory on a typical UNIX file system has at least 2 hard links: its name and its . entry. If subdirectories are present, each of those has a .. entry linked to that directory. When the sfind command examines a directory, after it has statted 2 fewer subdirectories than the directory's link count, it assumes that the rest of the entries in the directory are not directories. That is, the rest of the entries are leaf files in the directory tree. If only the files' names need to be examined, there is no need to stat them; this gives a significant increase in search speed.

-test_segments

For a segmented file, applies sfind tests to each individual data segment and to the index inode. If a sfind test returns true for a data segment or for a segmented file's index inode, sfind writes the file path, a slash, and the segment number. The number zero is written for the index inode's segment number.

The following options always automatically enable the -test_segments option: -segment n, -segment_i, -segment_s.

If this option is not specified, and the tests are applied to a segmented file, then the tests are applied at the file-level, and they are aggregated over all data segments.

This option has no effect on test results when applied to unsegmented files.

For more information, see the TESTS section of this man page.

-version

Writes the sfind command's version number to standard error.

-ractive

If the WORM feature is active writes the path of files which are retained and the retention period has not expired.

-rover

If the WORM feature is active writes the path of files whose retention period has expired.

-rafter date

If the WORM feature is active writes the path of files whose retention period ends after the given date. The date is specified with traditional format CCYYMMDDHHMM. CC is the century, YY is the year, MM is the month, DD is the day, HH is the hour, and MM is minute(s).

-rremain time

If the WORM feature is active writes the path of files with retention periods with at least time left. The time is a duration specified as a combination of years, days, hours, and minutes given as a string "MyNdOhPm" where M, N, O, P are arbitrary non-negative integers. y, d, h, m represent the number of years, days, hours, and minute(s) for the search.

-rlonger time

If the WORM feature is active writes the path of files with retention periods longer than time. The time is a duration specified as a combination of years, days, hours, and minutes given as a string "MyNdOhPm" where M, N, O, P are arbitrary non-negative integers. y, d, h, m represent the number of years, days, hours, and minute(s) for the search.

-rpermanent

If the WORM feature is active writes the path of files whose retention period is permanent.

-xdev

Prevents the command from descending directories on other file systems.

TESTS

An expression can contain one or more tests. Many tests accept a numeric argument, n. The numeric arguments can be specified with a preceding plus sign (+) or minus sign (-), as follows:

n Format

Meaning

+n

Greater than n.

-n

Less than n.

 n

Exactly n.

The available tests are as follows:

test

Condition

-admin_id n

File has admin id number n.

-amin n

File was last accessed n minutes ago.

-anewer file

File was last accessed more recently than file was modified. The -anewer test affects the -follow option only if the -follow option comes before (is to the left of) the -anewer test on the command line.

-any_copy_archive_i

File's copy is marked to be archived immediately.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if the segmented file's index inode's copy is marked to be archived immediately or one of the file's data segment's copy is marked to be archived immediately.

-any_copy_d

File has an archive copy that is damaged.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if the segmented file's index inode has an archive copy that is damaged or if at least one of the file's data segments has an archive copy that is damaged.

-any_copy_r

File has an archive copy marked for rearchiving by the rearch (1m) command or by the recycler.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if the segmented file's index inode has an archive copy marked for rearchiving or if at least one of the file's data segments has an archive copy marked for rearchiving.

-any_copy_s

File has an archive copy that is stale.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if the segmented file's index inode has an archive copy that is stale or if at least one of the file's data segments has an archive copy that is stale.

-any_copy_u

File has an unarchived copy.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if the segmented file's index inode has an unarchived copy or if at least one of the file's data segments has an unarchived copy.

-any_copy_v

File has an archive copy that is verified.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if the segmented file's index inode has an archive copy that is verified or if all of the file's data segments have an archive copy that is verified.

-archdone

File has completed archive processing. The archiver has no further work to do on the file at this time. Note that this does not mean that the file has been archived.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true for a segmented file if and only if all of the file's data segments have completed archive processing. This test does not evaluate a segmented file's index inode to see if it has completed archive processing.

-archive_C

File has had the equivalent of archive -C run against it, so the concurrent archiving is enabled. For more information on the -C option to the archive (1) command, see the archive (1) man page.

-archive_d

File has had the equivalent of archive -d run against it, so the archiver handles it according to system defaults. For more information on the -d option to the archive (1) command, see the archive (1) man page.

-archive_I

File has had the equivalent of archive -I run against it, so the inconsistent archiving is supported. For more information on the -I option to the archive (1) command, see the archive (1) man page.

-archive_n

File has had the equivalent of archive -n run against it, so it will never be archived. For more information on the -n option to the archive (1) command, see the archive (1) man page.

-archived

File is archived.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if all of the file's data segments are archived. This test does not evaluate a segmented file's index inode to see if it has been archived. The following sfind command finds files on ∕sam6 whose index inode has been archived:

sfind ∕sam6 -archived -segment_i -print

The preceeding sfind command identifies only index inodes that have been archived; it does not yield any information regarding whether a segmented file's data segments have been archived.

-archpos n

File has at least one archive copy at position n. Note that n may be preceded by + or -, and specified in decimal, or hexadecimal if preceded by "0x". This position is the position prior to the decimal point in sls output or the archiver log. If n is a path starting with "d" or "f" it is interpreted as a relative path to a disk archive file.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if the file's index inode has at least one archive copy at position n or if at least one of the file's data segments has at least one archive copy at position n.

-archpos1 n | -archpos2 n | -archpos3 n | -archpos4 n

File has the indicated copy number (1-4) at position n.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if the file's index inode has the indicated archive copy at position n or if at least one of the file's data segments has the indicated archive copy at position n.

-atime n

File was last accessed n*24 hours ago.

-cmin n

File status was last changed n minutes ago.

-cnewer file

File status was last changed more recently than file was modified. The -cnewer test is affected by the -follow option only if the -follow option comes before (is to the left of) the -cnewer test on the command line.

-copies n

File has n archive copies.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if each of the file's data segments have n archive copies. This test does not evaluate a segmented file's index inode to see if it has n archive copies.

-copy n

File has an archive copy number n.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if each of the file's data segments have an archive copy number n. This test does not evaluate a segmented file's index inode to see if it has an archive copy number n.

-copy_archive_i n

File's copy n is marked to be archived immediately.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if the segmented file's index inode's copy n is marked to be archived immediately or if at least one of the file's data segment's copy n is marked to be archived immediately.

-copy_d n

File has an archive copy number n that is damaged.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if the segmented file's index inode has an archive copy number n that is damaged or if at least one of the file's data segments has an archive copy number n that is damaged.

-copy_r n

File has an archive copy number n marked for rearchiving by the rearch (1m) command or by the recycler.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if the segmented file's index inode has an archive copy number n marked for rearchiving or if at least one of the file's data segments has an archive copy number n marked for rearchiving.

-copy_s n

File has a stale archive copy number n.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if the segmented file's index inode has a stale archive copy number n or if at least one of the file's data segment has a stale archive copy number n.

-copy_u n

File's archive copy number n is unarchived by the unarchive (1m) command.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if the segmented file's index inode's archive copy number n is unarchived or if at least one of the file's data segment's archive copy number n is unarchived.

-copy_v n

File has an archive copy number n that is verified.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if the segmented file's index inode has an archive copy number n that is verified or if all of the file's data segments have an archive copy number n that is verified.

-ctime n

File status was last changed n*24 hours ago.

-damaged

File is damaged.

-empty

File is empty and is either a regular file or a directory.

-false

Always false.

-fstype type

File is on a file system of type type. Possible file system types differ among the different UNIX versions and include, but are not limited to, the following: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, and S52K. You can use the -printf action with its %F argument to obtain the types of your file systems. For more information on -printf, see the ACTIONS section.

-gid n

File has n for its numeric group ID.

-group gname

File belongs to group gname. A numeric group ID is allowed.

-ilname pattern

Like -lname, but the match is case insensitive.

-iname pattern

Like -name, but the match is case insensitive. For example, a pattern of fo* and F?? both match file names Foo, FOO, foo, fOo, and so on.

-inum n

File has inode number n.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if any of the file's data segments or its index inode have inode number n.

-ipath pattern

Like -path, but the match is case insensitive.

-iregex pattern

Like -regex, but the match is case insensitive.

-is_setfa_D

File has had its directio set using the setfa -D command. For more information on the setfa -D command, see the setfa (1) man page.

-is_setfa_g

File has had its stripe group number set using the setfa -g command. For more information on the setfa -g command, see the setfa (1) man page.

-is_setfa_s

File has had its stripe width set using the setfa -s command. For more information on the setfa -s command, see the setfa (1) man page.

-links n

File has n links.

-lname pattern

File is a symbolic link whose contents match shell pattern pattern. The metacharacters do not treat the slash character () or the period character (.) specially.

-mmin n

File's data was last modified n minutes ago.

-mt media_type

File has an archive copy on the specified media_type on any copy.

-mt1 media_type | -mt2 media_type | -mt3 media_type | -mt4 media_type

File has an archive copy on the specified media_type for the indicated copy number (1-4).

-mtime n

File's data was last modified n*24 hours ago.

-name pattern

Base of file name (the path with the leading directories removed) matches shell pattern pattern. The metacharacters (*, ?, and [ ]) do not match a . at the start of the base name. To ignore a directory and the files under it, use the -prune action. For more information, see the example in the -path test in this list.

-newer file

File was modified more recently than file. The -follow option affects the -newer test only if the -follow option comes before (is to the left of) the -newer test on the command line.

-nouser

No user corresponds to the file's numeric user ID.

-nogroup

No group corresponds to the file's numeric group ID.

-offline

File is offline.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if the file's index inode is offline or if all of the file's data segments are offline.

-online

File is online.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if the file's index inode is online and all of the file's data segments are online.

-ovfl

File has at least one archive copy that has sections on more than one VSN; this condition is known as volume overflow.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if the file's index inode has at least one archive copy that has sections on more than one VSN or if at least one of the file's data segments has an archive copy that has sections on more than one VSN.

-ovfl1 | -ovfl2 | -ovfl3 | -ovfl4

File has an archive copy that has sections on more than one VSN for the indicated copy number (1-4).

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if the file's index inode has an archive copy that has sections on more than one VSN for the indicated copy number or if at least one of the file's data segments has an archive copy that has sections on more than one VSN for the indicated copy number.

-partial_on

File has the partial-release attribute set and the partially retained portion of the file is online.

-path pattern

File name matches shell pattern pattern. The metacharacters do not treat the slash () or the period (.) specially. For example, the following line writes an entry for a directory called .∕src∕misc (if one exists):

sfind. -path '.∕sr*sc'

To ignore a whole directory tree, use the -prune action rather than checking every file in the tree. For example, the following command skips the directory src∕emacs for all files and directories under it and it writes the names of the other files found:

sfind. -path '.∕src∕emacs' -prune -o -print
-perm mode

File's permission bits are exactly mode (octal or symbolic). Symbolic modes use mode 0 as a point of departure.

-perm -mode

All of the permission bits mode are set for the file.

-perm +mode

Any of the permission bits mode are set for the file.

-project pname

File belongs to project pname. A numeric project ID is allowed.

-regex pattern

File name matches regular expression pattern. This is a match on the whole path, not a search. For example, to match a file named .∕fubar3, you can use the regular expression .*bar. or .*b.*3, but not b.*r3.

-release_d

File has had the equivalent of having the release (1) command with its -d option run against it, and thus has the default release handling.

-release_a

File has had the equivalent of having the release (1) command with its -a option run against it, and thus will be released immediately after being archived.

-release_n

File has had the equivalent of having the release (1) command with its -n option run against it, and thus will never be released.

-release_p

File has had the equivalent of having the release (1) command with its -p option run against it, and thus will be partially released.

-rmedia

File is a removable media file.

-rmin n

File's residence was changed n minutes ago.

-rtime n

File's residence was changed n*24 hours ago.

-sections n

File has at least one archive copy that has sections on n VSNs.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if the file's index inode has at least one archive copy that has sections on n VSNs or if at least one of the file's data segments has an archive copy number n that has sections on n VSNs.

-sections1 n | -sections2 n | -sections3 n | -sections4 n

File has an archive copy that has sections on n VSNs for the indicated copy number (1-4).

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if the file's index inode has at least one archive copy that has sections on n VSNs for the indicated copy number or if at least one of the file's data segments has an archive copy number n that has sections on n VSNs.

-segment n

Data segment or index inode has segment number n.

Index inodes always have segment number 0. Data segments are numbered sequentially starting with 1.

This test always causes sfind to run as if the -test_segments option were in effect.

-segment_a

File or directory has had the segment attribute set.

If the -test_segments option is also in effect, then this test evaluates to true for index inodes and data segments in addition to files and directories that have had the segment attribute set.

-segment_i

Item is an index inode.

This test always causes sfind to run as if the -test_segments option were in effect.

-segment_s

Item is a data segment.

This test always causes sfind to run as if the -test_segments option were in effect.

-segmented

Item is a segmented file.

If used in conjunction with the -test_segments option, this test evaluates to true for index inodes and data segments.

-segments n

Segmented file has n data segments.

-setfa_g n

File's stripe group was set to n using the command setfa -g n. For more information on the setfa -g command, see the setfa (1) man page.

-setfa_s n

File's stripe width was set to n using the command setfa -s n. For more information on the setfa -s command, see the setfa (1) man page.

-size n[unit]

File uses n 512-byte blocks. To specify another size, use the unit suffix. The possible unit specifiers are as follows:

unit

Meaning

b or c

Bytes.

k

Kilobytes.

m

Megabytes.

g

Gigabytes.

t

Terabytes.

For example, the following specifications are equivalent:

-size 3
-size 1536b

The -size test does not count indirect blocks, but it does count blocks in sparse files that are not actually allocated.

-ssum_algo n,

File has checksum algorithm n.

-ssum_F

File has had the equivalent of the ssum (1) command with its -F option run against it, and thus will be marked immutable and have the gen and use attributes set. The file's message digest is checked then the file is archived and verified (used) when it is staged.

-ssum_g

File has had the equivalent of the ssum (1) command with its -g option run against it, and thus will have a checksum value generated and stored for it when it is archived.

-ssum_u

File has had the equivalent of the ssum (1) command with its -u option run against it, and thus will have a checksum value verified (used) when it is staged.

-ssum_v

File has a valid checksum value.

For a segmented file, if the -test_segments option is not in effect, this test evaluates to true if all of the file's data segments have valid checksum values. This test does not evaluate a segmented file's index inode to see if it has a valid checksum value.

-stage_a

File has had the equivalent of the stage (1) command with its -a option run against it, and thus will have associative staging behavior.

-stage_d

File has had the equivalent of the stage (1) command with its -d option run against it, and thus will have the default staging behavior.

-stage_n

File has had the equivalent of the stage (1) command with its -n option run against it, and thus will not be staged into disk cache for read references.

-true

Always true.

-type c

File is of type c. For c, specify one of the following:

Type c

Meaning

b

Block (buffered) special.

c

Character (unbuffered) special.

d

Directory.

p

Named pipe (FIFO).

f

Regular file.

l

Symbolic link.

s

Socket.

R

Removable media file.

-uid n

File's numeric user ID is n.

-used n

File was last accessed n days after its status was last changed.

-user uname

File is owned by user uname (numeric user ID allowed).

-verify

File has the verify attribute set. See the ssum (1) man page for more information on the verify attribute.

-vsn pattern

File has an archive copy on a volume with VSN matching shell pattern pattern for any copy.

-vsn1 pattern | -vsn2 pattern | -vsn3 pattern | -vsn4 pattern

File has an archive copy on a volume with VSN matching shell pattern pattern for the indicated copy (1-4).

-xmin n

File's data was created n minutes ago.

-xtime n

File's data was created n*24 hours ago.

-xtype c

The same as -type unless the file is a symbolic link. For symbolic links, the -xtype test checks the type of the file that the -type test does not check. For c values, see the -type test in this list.

For symbolic links, the following occurs:

  • If the -follow option has not been specified, the test returns true if the file is a link to a file of type c.

  • If the -follow option has been specified, the test returns true if c is l.

    ACTIONS

    An expression can contain one or more actions. The available actions are as follows:

action

Result

-exec command ;

Executes the specified command. True if 0 status is returned. All arguments to the right of the -exec keyword are assumed to be arguments to command until an argument consisting of a semicolon (;) is encountered. The string {} is replaced by the current file name being processed everywhere it occurs in the arguments to the command, not just in arguments where it is alone, as in some versions of the find (1) command. Both of these constructions might need to be escaped with a backslash character (\fB\) or quoted to protect them from expansion by the shell.

-fprint file

True. Writes the full file name to file file. If file does not exist when sfind is run, it is created. If file does exist, it is truncated. The file names ∕dev∕stdout and ∕dev∕stderr are handled specially; they refer to the standard output and standard error output, respectively.

-fprint0 file

True. Similar to the -print0 action, but it writes to file like -fprint.

-fprintf file format

True. Similar to the -printf action, but it writes to file, using format, like the -fprint action. For information on possible format option, see the -printf format action.

-ok command ;

Executes the specified command, like the -exec action, but it asks the user first (on the standard input). If the user response does not start with y or Y, command is not run, and the return value is false.

-print

True. Writes the full file name, followed by a newline, to standard output.

-print0

True. Writes the full file name, followed by a null character, to standard output. This allows file names that contain newlines to be interpreted correctly by programs that process the sfind output.

-printf format

True. Writes format to standard output, interpreting both backslash (\fB\) escape and percent character (%) directives. Field widths and precisions can be specified as with the printf (3C) C library function. Unlike the -print action, the -printf action does not add a newline at the end of the string.

Two lists follow. The escapes are listed first, and the directives are listed after the escapes.

Esc

Result

\fB\a

Alarm bell.

\fB\b

Backspace.

Stops printing from this format immediately.

\f

Form feed.

\fB\n

Newline.

\fB\r

Carriage return.

\fB\t

Horizontal tab.

\fB\v

Vertical tab.

\fB\\

A literal backslash (\fB\).

A backslash character (\fB\) followed by any other character is treated as an ordinary character, so both are written.

The directives begin with a percent (%) character followed by another character from the following list. If the % character is followed by a character that is not from this list, the directive is discarded, but the other character is printed. The directives are as follows:

Dir

Meaning

%%

A literal percent sign.

%a

File's last access time in the format returned by the C ctime (3C) function.

%Ak

File's last access time in the format specified by k, which is either an ampersand (@) or a directive for the C strftime (3C) function. The directives specify either the time or date. The possible values for k follow. Some of them might not be available on all systems, due to differences in the strftime (3C) function between systems.

  • An ampersand (@). The ampersand signifies seconds elapsed since Jan. 1, 1970, 00:00 GMT.

  • A time field. The time fields are as follows:

k

Meaning

H

The hour in 00, …, 23 format.

I

The hour in 01, …, 12 format.

k

The hour in 0, …, 23 format.

l

The hour in 1, …, 12 format.

M

The minute in 00, …, 59 format.

p

Specifies whether the locale's time is AM or PM.

r

The time in a 12-hour format. This results in a hh:mm:ss [A | P]M format.

S

The second in a 00, …, 61 format.

T

The time in a 24-hour format. This results in a hh:mm:ss format.

X

The locale's time representation in H:M:S.

Z

The time zone (for example, EDT) or nothing (if no time zone is determinable).

  • A date field. The date fields are as follows:

k

Meaning

a

The locale's abbreviated weekday name in, …, Sat format.

A

The locale's full weekday name, in day, …, Saturday format. This is of variable length.

b, h

The locale's abbreviated month name in Jan, …, Dec format.

B

The locale's full-month name in January, …, December format. This is of variable length.

c

The locale's date and time in the following example format: Sat Nov 04 12:02:33 EST 1989.

d

The day of month in 01, …, 31 format.

D

The date in mmddyy format.

j

The day of year in 001, …, 366 format.

m

The month in 01, …, 12 format.

U

The number of the week in the year, with day considered to be the first day of week, in 00, …, 53 format.

w

The day of week in 0, …, 6 format.

W

The number of the week in the year, with Monday considered to be the first day of week, in 00, …, 53 format.

x

The locale's date representation in mmddyy format.

y

The last two digits of year in 00, …, 99 format.

Y

The year in the following example format: 2002.

Dir

Meaning

%b

File's size in 512-byte blocks (rounded up).

%B

File's start time for the WORM retention period in the format returned by the C ctime (3C) function.

A dash (-) is written if the item is not a WORM, or does not reside in a QFS or Oracle HSM file system.

%c

File's last status change time in the format returned by the C ctime (3C) function.

%Ck

File's last status change time in the format specified by k, which is the same as for the %Ak directive. For more information, see the %Ak directive previously in this list.

%d

File's depth in the directory tree. A zero (0) means that the file is a command line argument.

%e

File's creation time in the format returned by the C ctime (3C) function.

A dash (-) is written if the item does not reside in a QFS or Oracle HSM file system.

%Ek

File's creation time in the format specified by k, which is the same as for %Ak. For more information, see the %Ak directive previously in this list.

A dash (-) is written if the item does not reside in a QFS or Oracle HSM file system.

%f

File's name with any leading directories removed.

%F

Type of file system the file is on. This value can be used for the -fstype test.

%g

File's group name. This is the numeric group ID if the group has no name.

%G

File's numeric group ID.

%h

Leading directories of file's name.

%H

Command line argument under which file was found.

%i

File's inode number in decimal.

%j

File's last attribute change time in the format returned by the C ctime (3C) function.

A dash (-) is written if the item does not reside in a QFS or Oracle HSM file system.

%Jk

File's last attribute change time in the format specified by k, which is the same as for %Ak. For more information, see the %Ak directive previously in this list.

A dash (-) is written if the item does not reside in a QFS or Oracle HSM file system.

%k

File's size in 1K blocks rounded up.

%K

Segment number of the data segment or the index inode.

Index inodes always have segment number 0. Data segments are numbered sequentially starting with 1.

A dash (-) is written if the item is not an index inode and not a data segment.

%l

Object of symbolic link. Empty string if file is not a symbolic link.

%m

File's permission bits in octal.

%n

Number of hard links to file.

%p

File's name.

%P

File's name with the name of the command line argument under which it was found removed.

%Q

Number of data segments that comprise the segmented file.

A dash (-) is written if the item is not a segmented file.

%r

File's stripe group number as it was set using the setfa -g command. A dash (-) is written if the file's stripe group number was not set using setfa -g or if the file does not reside in a StorageTek QFS file system. For more information on the setfa -g command, see the setfa (1) man page.

%R

The WORM retention period for a WORM capable directory or WORM file in YYYYy, DDd, HHh, MMm format. If the retention period is 0, "permanent" is written.

A dash (-) is written if the item is not a WORM, or does not reside in a QFS or Oracle HSM file system.

%s

File's size in bytes.

%t

File's last modification time in the format returned by the C ctime (3C) function.

%Tk

File's last modification time in the format specified by k, which is the same as for %Ak. For more information, see the %Ak directive previously in this list.

%u

File's user name, or numeric user ID if the user has no name.

%U

File's numeric user ID.

%w

File's stripe width as it was set using the setfa -s command. A dash (-) is written if the file's stripe width was not set using setfa -s or if the file does not reside in a StorageTek QFS or Oracle HSM file system. For more information on the setfa -s command, see the setfa (1) man page.

%W

The retention state of the item. If the WORM is capable for a directory, worm-capable is written, or active or over is written for a file.

A dash (-) is written if the item is not a WORM, or does not reside in a QFS or Oracle HSM file system.

%X

File's date the WORM retention period will expire in the format of %c of the C strftime (3C) function. If the retention period is 0 (never expire), "*" is written.

A dash (-) is written if the item is not a WORM, or does not reside in a QFS or Oracle HSM file system.

%y

File's residence time in the format returned by the C ctime (3C) function.

A dash (-) is written if the item does not reside in a QFS or Oracle HSM file system.

%Yk

File's residence time in the format specified by k, which is the same as for %Ak. For more information, see the %Ak directive previously in this list.

A dash (-) is written if the item does not reside in a QFS or Oracle HSM file system.

%Z

Segment length setting in megabytes. A dash (-) is written if the item does not have the segment attribute set.

-prune

Always yields true. Does not examine any directories or files in the directory structure below the pattern just matched. If -depth is specified, -prune has no effect.

-ls

True. Writes information on the current file to standard output. The information written is in ls (1) command format with -dils options. For more information on the ls (1) command, see the ls (1) man page.

By default, the block counts in the output are in 1K blocks. If the POSIXLY_CORRECT environment variable is set, block counts are in 512-byte blocks.

OPERATORS

An expression can contain one or more operators. The following operators are listed in order of decreasing precedence:

operators

Action

( expr )

Forces precedence.

! expr

True if expr is false.

-not expr

Same as ! expr.

expr1 expr2

And (implied). expr2 is not evaluated if expr1 is false.

expr1 -a expr2

Same as expr1 expr2.

expr1 -and expr2

Same as expr1 expr2.

expr1 -o expr2

Or. expr2 is not evaluated if expr1 is true.

expr1 -or expr2

Same as expr1 -o expr2.

expr1 , expr2

List. Both expr1 and expr2 are always evaluated. The value of expr1 is discarded. The value of the list is the value of expr2.

EXAMPLES

Example 1. The following command finds all files in the ∕sam4 directory that are not archived:

sfind ∕sam4 ! -archived

Example 2. The following command finds all regular files in the current directory that are archived, online, and are nonzero in length:

sfind.  -archived -online ! -empty -type f -print

Example 3. The following command finds all regular files in the current directory that have archive copies on VSNs matching the shell pattern TP??3?. Note that shell wildcard characters must be escaped or quoted.

sfind.  -vsn "TP??3?" -type f

Alternatively, the following command could be used:

sfind.  -vsn TP\\?\\?3\\? -type f

Example 4. The following command prints the modification time of all files in ∕sam6:

sfind ∕sam6 -printf "file %f mod time %Aa %Ab %Ad %AY %AT\\n"
file file7 mod time Fri Nov 12 1999 18:44:27

Example 5. The following command finds all files on ∕sam6 that have at least one archive copy that has sections on more than one VSN, i.e. all files on ∕sam6 that have at least one archive copy that overflows VSNs.

sfind ∕sam6 -ovfl -print

Example 6. The following command finds all files on ∕sam6 that have at least one archive copy that has sections on more than one VSN, but fewer than five VSNs.

sfind ∕sam6 -sections +1 -sections -5 -print

Example 7. The following command finds all files in ∕sam6 whose stripe group was set to a value greater than 3 but less than 8 and whose stripe width was set to a value greater than 1, but less than 5. It prints the file's path, stripe group number and stripe width value:

sfind ∕sam6 -type f -setfa_g +3 -setfa_g -8 -setfa_s +1 -setfa_s -5 \\
											-printf "Path: %p, g%r, s%w\\n"
Path: ∕sam6∕seismic_scan∕030610∕1200∕scn.dat, g4, s2

Example 8. The following command finds all files in ∕sam6 which have disk archive copies on disk volume "diskv1" in file "d1∕d4∕d201∕f107".

sfind ∕sam6 -vsn diskv1 -archpos d1∕d4∕d201∕f107

EXIT STATUS

The sfind (1) command exits with status of 0 if all files are processed successfully. It exits with a status greater than 0 if errors occur.

SEE ALSO

archive (1), find (1), release (1), setfa (1), ssum (1), stage (1).

rearch (1m).

printf (3C).