Skip to content

find.flexfs

find.flexfs provides fast filesystem search by querying the metadata server directly, bypassing the FUSE layer. It supports filters on inode attributes, timestamps, size, cost, permissions, and file type.

Terminal window
find.flexfs [flags] [path...]

If no path is specified, the current directory is used. Can operate from within a flexFS mount or connect directly via --metaAddr and --volume.

FlagTypeDefaultDescription
--fieldsstring slicepathOutput fields (comma-separated). Use all for all fields.
--headerboolfalseInclude header row in output
--limituint640Maximum number of results (0 = unlimited)
--noDecodeboolfalsePrint base32-encoded paths
--outputFile, -ostringOutput file path

Available fields: path, ino, mode, type, perm, blocks, size, size_bin, cost, nlink, uid, gid, ctime, mtime, atime, btime, xattrs.

The cost field is an estimated monthly storage cost in US dollars ($/month). See the analyze.flexfs cost field documentation for how it is calculated.

FlagTypeDefaultDescription
--metaAddrstringMetadata server address (must pair with --volume)
--volumestringVolume UUID or name (must pair with --metaAddr)
FlagTypeDefaultDescription
--emptyboolfalseFilter for empty files or directories
--giduint320Filter by group ID
--inouint640Filter by inode number
--namestringFilter by dentry name (supports glob patterns)
--permuint320Required permission bits (octal with 0 prefix, e.g. 0755). Matches when (mode & permMask) == perm.
--permMaskuint320777Bits of the file mode to test (octal with 0 prefix, max 07777). Default 0777 tests owner/group/other. Set to 07777 to also test setuid/setgid/sticky.
--sparseboolfalseFilter for sparse files
--typestringFilter by inode type: b, c, d, f, l, p, s
--uiduint320Filter by user ID
FlagTypeDefaultDescription
--maxBlocksuint640Maximum blocks filter
--maxCostfloat640Maximum estimated monthly cost filter ($/month)
--maxNlinkuint320Maximum hard link count filter
--maxSizeuint640Maximum byte size filter
--maxSizeBinuint320Maximum size bin filter (0-74)
--minBlocksuint640Minimum blocks filter
--minCostfloat640Minimum estimated monthly cost filter ($/month)
--minNlinkuint320Minimum hard link count filter
--minSizeuint640Minimum byte size filter
--minSizeBinuint320Minimum size bin filter (0-74)

Timestamp values are in seconds since epoch (Unix time).

FlagTypeDefaultDescription
--maxAtimeuint640Maximum access time
--maxBtimeuint640Maximum birth time
--maxCtimeuint640Maximum change time
--maxMtimeuint640Maximum modification time
--minAtimeuint640Minimum access time
--minBtimeuint640Minimum birth time
--minCtimeuint640Minimum change time
--minMtimeuint640Minimum modification time
FlagTypeDefaultDescription
--maxDepthuint320Maximum query depth (0 = unlimited)
--minDepthuint320Minimum query depth
FlagTypeDefaultDescription
--noMetaSSLboolfalseDisable SSL for metadata server connections

Find all files larger than 1 GiB:

Terminal window
find.flexfs --minSize 1073741824 --type f /mnt/flexfs

Find files by name pattern with full metadata:

Terminal window
find.flexfs --name "*.bam" --fields all --header /mnt/flexfs/data

Find empty directories (candidates for cleanup):

Terminal window
find.flexfs --type d --empty /mnt/flexfs

Find all symlinks under a path:

Terminal window
find.flexfs --type l --fields path,size /mnt/flexfs/data

Find the most expensive files (costing more than $1/month):

Terminal window
find.flexfs --minCost 1 --type f --fields path,size,cost --header /mnt/flexfs

Find cold files (not accessed in over 6 months, size bin 6+) that are still large:

Terminal window
find.flexfs --minSizeBin 6 --minSize 1073741824 --type f \
--fields path,size,size_bin,cost --header /mnt/flexfs

Find files not accessed since January 1 2025 (stale data candidates):

Terminal window
# 2025-01-01T00:00:00Z = 1735689600
find.flexfs --maxAtime 1735689600 --type f /mnt/flexfs

Find files modified in a specific window (e.g. during an incident):

Terminal window
# 2025-03-15 00:00:00Z = 1741996800, 2025-03-16 00:00:00Z = 1742083200
find.flexfs --minMtime 1741996800 --maxMtime 1742083200 --type f \
--fields path,size,mtime --header /mnt/flexfs

Find files created in the last 7 days:

Terminal window
# Use $(date -d '7 days ago' +%s) on Linux or $(date -v-7d +%s) on macOS
find.flexfs --minBtime $(date -v-7d +%s) --type f /mnt/flexfs

Find files with exact permissions rwxrwxrwx:

Terminal window
find.flexfs --perm 0777 --type f --fields path,perm /mnt/flexfs

Find world-writable files (other-write bit set):

Terminal window
find.flexfs --perm 02 --permMask 02 --type f --fields path,perm /mnt/flexfs

Find files with the setuid bit set:

Terminal window
find.flexfs --perm 04000 --permMask 04000 --type f --fields path,perm /mnt/flexfs

Find all files owned by a specific user:

Terminal window
find.flexfs --uid 1001 --type f --fields path,size,uid /mnt/flexfs

Find sparse files (logical size exceeds allocated blocks):

Terminal window
find.flexfs --sparse --type f --fields path,size,blocks /mnt/flexfs

Export a full file inventory to TSV:

Terminal window
find.flexfs --fields all --header --type f \
--outputFile /tmp/inventory.tsv /mnt/flexfs

Query a volume directly without a local mount:

Terminal window
find.flexfs --metaAddr meta.example.com:443 --volume my-vol --type d /

Output is tab-separated. The columns correspond to the --fields list. When --header is set, the first line contains field names.