Home
TR

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.