Query language
A sentence you lengthen when you need to: filters, comparisons, wildcards and the fields the filesystem already knows.
On this page (5 sections)
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 syntaxThat 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.
If something on this page is missing or wrong, report it on GitHub Issues.