Query language
A sentence you lengthen when you need to: filters, comparisons, wildcards and the fields the filesystem already knows.
The query language is not there to be learned; it is there to be lengthened. Type one word and it is looked for in file names, which is usually enough. Add a filter when you want one.
The window and the browser page show you what your query means in plain words beside it — type ext:rs kind:code dm:7d and you read “extension is .rs and type is code and modified >= 2026-08-19”. When you get it wrong you find out from the sentence, not from an empty result.
The basics
| Written | Means |
|---|---|
report |
anything with that in its name |
report draft |
a space is and: both must appear |
report|draft |
a bar is or |
!draft |
a bang is not |
"two words" |
quotes: an exact phrase, wildcards inside are literal |
*.rs |
wildcards — * and ? |
Projects/Scour |
a term with a slash looks at the path |
The structure is one level deep: a query is a sequence of and-ed groups, and each group is a set of or-ed alternatives. (a|b) (c|d) works; there are no nested parentheses.
Filters
| Field | Example | What it does |
|---|---|---|
ext: |
ext:pdf, ext:rs;toml |
extension — several, separated by semicolons |
kind: |
kind:code, kind:image |
what it is: code, doc, image, audio, video, archive, data… |
size: |
size:>10mb, size:=0 |
a size comparison |
dm: |
dm:7d, dm:2026-01-01 |
when it was last modified |
folder: / file: |
folder: |
folders only / files only |
under: |
under:/etc |
below this tree |
depth: |
depth:3 |
how many slashes from the root |
regex: |
regex:^lib |
a regular expression against the folded name |
What the filesystem knows
These were already stored in columns; they became part of the language.
| Field | Example | What it does |
|---|---|---|
node: |
node:l |
node type: f file, d directory, l symlink, s socket… |
perm: |
perm:644, perm:/222 |
permission bits — / means “any of these bits” |
user: / group: |
user:root |
owner; names resolved from /etc/passwd |
suid: sgid: sticky: ww: |
ww: |
the special bits; ww: is world-writable |
items: |
items:>100 |
how many entries a folder holds |
Everything’s spellings
A handful of spellings from voidtools Everything are supported by rewriting text to text, without growing the syntax tree:
| Written | Becomes |
|---|---|
size:1mb..2mb |
size:>=1mb size:<=2mb |
<a|b> |
(a|b) |
pic: audio: video: doc: exe: zip: |
the matching kind: |
empty: |
file: size:=0 |
startwith:X / endwith:X |
X* / *X |
The whole list
scour syntax
That command prints the language in full, and its output is the single source of truth in the source tree: a new field is written there first.