.B lfs find \fR<\fIdirectory\fR|\fIfilename \fR...>
[[\fB!\fR] \fB--atime\fR|\fB-A\fR [\fB-+\fR]\fIn[smhdwy]\fR]
[[\fB!\fR] \fB--blocks\fR|\fB-b\fR [\fB+-\fR]\fIn\fR]
- [[\fB!\fR] \fB--btime\fR|\fB--Btime\fR|\fB-B\fR [\fB+-\fR]\fIn[smhdwy]\fR]
- [[\fB!\fR] \fB--ctime\fR|\fB-C\fR [\fB+-\fR]\fIn[smhdwy]\fR]
+ [[\fB!\fR] \fB--btime\fR|\fB-B\fR [\fB+-\fR]\fIn[smhdwy]\fR]
+[[\fB!\fR] \fB--ctime\fR|\fB-C\fR [\fB+-\fR]\fIn[smhdwy]\fR]
[[\fB!\fR] \fB--component-count|\fB--comp-count\fR [\fB+-\fR]\fIn\fR]
[[\fB!\fR] \fB--component-end|\fB--comp-end\fR|\fB-E\fR [\fB+-\fR]\fIn\fR[\fBKMGTPE\fR]]
- [[\fB!\fR] \fB--component-flags|\fB--comp-flags\fR <[^]\fIflag\fB,\fR...>]
+ [[\fB!\fR] \fB--component-flags|\fB--comp-flags\fR [^]\fIFLAG\fB,\fR...]
[[\fB!\fR] \fB--component-start|\fB--comp-start\fR [\fB+-\fR]\fIn\fR[\fBKMGTPE\fR]]
[[\fB!\fR] \fB--extension-size|\fB-z\fR [\fB+-\fR]\fIn\fR[\fBKMG\fR]]
- [[\fB!\fR] \fB--gid\fR|\fB-g\fR|\fB--group\fR|\fB-G\fR <\fIgname\fR>|<\fIgid\fR>]
- [[\fB!\fR] \fB--layout\fR|\fB-L mdt\fR,\fBraid0\fR,\fBreleased\fR]
- [[\fB!\fR] \fB--foreign\fR [<\fItype\fR>]]
-[[\fB!\fR] \fB--gid\fR|\fB-g\fR|\fB--group\fR|\fB-G\fR <\fIgname\fR>|<\fIgid\fR>]
- [[\fB!\fR] \fB--layout\fR|\fB-L mdt\fR,\fBraid0\fR,\fBreleased\fR]
+ [[\fB!\fR] \fB--foreign\fR [\fITYPE\fR]]
+[[\fB!\fR] \fB--gid\fR|\fB-g\fR|\fB--group\fR|\fB-G\fR \fIGNAME\fR|\fIGID\fR>]
+ [\fB--help\fR|\fB-h\fR]
+[[\fB!\fR] \fB--layout\fR|\fB-L mdt\fR,\fBraid0\fR,\fBreleased\fR]
[\fB--lazy\fR]
[\fB--maxdepth\fR|\fB-D\fI n\fR]
-[[\fB!\fR] \fB--mdt\fR|\fB--mdt-index\fR|\fB-m\fR <\fIuuid\fR|\fIindex\fR,...>]
+[[\fB!\fR] \fB--mdt\fR|\fB--mdt-index\fR|\fB-m\fR \fIUUID\fR|\fIINDEX\fR,...]
[[\fB!\fR] \fB--mdt-count\fR|\fB-T\fR [\fB+-\fR]\fIn\fR]
-[[\fB!\fR] \fB--mdt-hash\fR|\fB-H <\fIhashtype\fR>]
+[[\fB!\fR] \fB--mdt-hash\fR|\fB-H \fR<[^]\fIHASHFLAG\fR,[^]\fIHASHTYPE\fR,...>]
[[\fB!\fR] \fB--mirror-count|\fB-N\fR [\fB+-\fR]\fIn\fR]
-[[\fB!\fR] \fB--mirror-state\fR <[^]\fIstate\fR>]
+[[\fB!\fR] \fB--mirror-state\fR [^]\fISTATE\fR]
[[\fB!\fR] \fB--mtime\fR|\fB-M\fR [\fB-+\fR]\fIn[smhdwy]\fR]
-[[\fB!\fR] \fB--name\fR|\fB-n <\fIpattern\fR>]
- [[\fB!\fR] \fB--newer\fR[\fBXY\fR] <\fIreference\fR>]
- [[\fB!\fR] \fB--ost\fR|\fB-O\fR <\fIindex\fR,...>]
-[[\fB!\fR] \fB--pool\fR <\fIpool\fR>]
+[[\fB!\fR] \fB--name\fR|\fB-n \fIPATTERN\fR]
+ [[\fB!\fR] \fB--newer\fR[\fBXY\fR] \fIREFERENCE\fR]
+ [[\fB!\fR] \fB--ost\fR|\fB-O\fR \fIINDEX\fR,...]
+ [[\fB!\fR] \fB--perm\fR [\fB/-\fR]\fIMODE\fR ]
+[[\fB!\fR] \fB--pool\fR \fIPOOL\fR]
[\fB--print\fR|\fB-P\fR]
[\fB--print0\fR|\fB-0\fR]
-[[\fB!\fR] \fB--projid\fR |<\fIprojid\fR>]
+[[\fB!\fR] \fB--projid\fR \fIPROJID\fR]
[[\fB!\fR] \fB--size|\fB-s\fR [\fB-+\fR]\fIn\fR[\fBKMGTPE\fR]]
[[\fB!\fR] \fB--stripe-count|\fB-c\fR [\fB+-\fR]\fIn\fR]
[[\fB!\fR] \fB--stripe-index|\fB-i\fR \fIn\fR,...]
[[\fB!\fR] \fB--stripe-size|\fB-S\fR [\fB+-\fR]\fIn\fR[\fBKMG\fR]]
[[\fB!\fR] \fB--type\fR|\fB-t\fR {\fBbcdflps\fR}]
-[[\fB!\fR] \fB--uid\fR|\fB-u\fR|\fB--user\fR|\fB-U
-<\fIuname\fR>|<\fIuid>\fR]
+[[\fB!\fR] \fB--uid\fR|\fB-u\fR|\fB--user\fR|\fB-U \fIUNAME\fR|\fIUID\fR]
.SH DESCRIPTION
.B lfs find
is similar to the standard
.BR --atime | -A
File was last accessed \fIn\fR*24 hours ago (if no units are given),
or \fIn\fR*\fBs\fReconds, \fBm\fRinutes, \fBh\fRours, \fBd\fRays,
-\fBw\fReeks, or \fBy\fRears ago within a margin of error of 24h,
-or smaller if a unit is specified. Multiple units can be specified,
-for example \fB8h20m\fR is equivalent to \fB500m\fR. If multipe units
+\fBw\fReeks, or \fBy\fRears ago within a margin of error of 24h
+if no unit is specified. Multiple units can be specified,
+for example \fB8h20m\fR is equivalent to \fB500m\fR. If multiple units
are specified, the margin of error is based on the smallest unit used, so
.B -atime 3d
has a margin of error of one day, while
if specified. Presently only
.B none
or
-.B daos
+.B symlink
are defined types, though 32-bit numeric types can also be used.
.TP
.BR --gid | -g
.BR --group | -G
File belongs to specified group, numeric group ID allowed.
.TP
+.BR --help | -h
+Print usage message.
+.TP
.BR --layout | -L
File has a layout of the given type, one of:
.RS 1.2i
DNE striped directory uses the given filename hashing function, one of:
.RS 1.2i
.TP
+.B crush
+The CRUSH consistent hash function, added in Lustre 2.14, minimizes
+entry migration if the directory stripe count changes during migration.
+.TP
.B fnv_1a_64
The Fowler\-Noll\-Vo hash function, which is a simple and efficient hash.
.TP
This is mostly for testing, or if it is known that filenames will use
sequential filenames.
.RE
+This implicitly selects only directories to be matched, like
+.B -type d
+and not other file types.
.TP
.BR --mdt-count | -T
-The DNE striped directory has the given number of MDT shards.
+The DNE striped directory has the given number of MDT shards. This
+implicitly selects only directories to be matched, like
+.B -type d
+and not other file types.
.TP
.BR --mirror-count | -N
The file has \fIn\fR mirrors in its layout.
.BR glob (7)
file name regular expressions and wildcards.
.TP
-.BR -newer [ XY "] " \fIreference
+.BR --newer [ XY "] " \fIreference
Succeeds if timestamp \fIX\fR of the file being considered is newer
than timestamp \fIY\fR of the file
.IR reference .
and replacement using
.BR lfs-migrate (1).
.TP
+.BR "--perm \fImode\fR"
+File's permission are exactly \fImode\fR (octal or symbolic).
+.TP
+.BR "--perm /\fImode\fR"
+All of the permission bits \fImode\fR are set for the file.
+.TP
+.BR "--perm -\fImode\fR"
+Any of the permission bits \fImode\fR are set for the file. If no permission
+bits in \fImode\fR are set, this test matches any file.
+.TP
.BR --pool
Layout was created with the specified
.I pool
.B $ lfs find ! --mirror-state=ro /mnt/lustre
Recursively list all out-of-sync mirrored files.
.TP
-.B $ lfs find ! --foreign=daos /mnt/lustre
+.B $ lfs find ! --foreign=symlink /mnt/lustre
Recursively list all but foreign files/dirs of
-.B daos
+.B symlink
type.
.SH BUGS
The
.BR lfs-getdirstripe (1),
.BR lfs-migrate (1),
.BR lfs_migrate (1),
-.BR lustre (7)
+.BR lustre (7),
.BR xargs (1)