A linguagem de consulta do Cardinal é intencionalmente próxima da sintaxe do Everything, mas reflete o que o mecanismo atual realmente implementa. Esta página é a referência oficial do que o backend em Rust entende hoje.
English · Español · 한국어 · Русский · 简体中文 · 繁體中文 · Português · Italiano · 日本語 · Français · Deutsch · Українська · العربية · हिन्दी · Türkçe
- Cada consulta é analisada em uma árvore de:
- Palavras / frases (texto simples, strings entre aspas, curingas),
- Filtros (
ext:,type:,dm:,content:, …), - Operadores booleanos (
AND,OR,NOT/!).
- A correspondência ocorre sobre o caminho completo de cada arquivo indexado, não apenas o nome base.
- A sensibilidade a maiúsculas/minúsculas é controlada pelo toggle da UI:
- Quando não diferencia maiúsculas/minúsculas, o mecanismo coloca em minúsculas tanto a consulta quanto os candidatos para correspondência de nome/conteúdo.
- Quando diferencia maiúsculas/minúsculas, o mecanismo compara os bytes como estão.
Exemplos rápidos:
report draft # arquivos cujo caminho contém “report” e “draft”
ext:pdf briefing # PDFs cujo nome contém “briefing”
parent:/Users demo!.psd # em /Users, excluir arquivos .psd
regex:^Report.*2025$ # nomes que correspondem a uma regex
ext:png;jpg travel|vacation # PNG ou JPG cujos nomes contêm “travel” ou “vacation”
- Um token sem aspas é uma correspondência por substring no caminho:
democorresponde a/Users/demo/Projects/cardinal.md.
- Frases entre aspas duplas correspondem à sequência exata, incluindo espaços:
"Application Support"corresponde a/Library/Application Support/....
- O toggle de sensibilidade a maiúsculas/minúsculas da UI se aplica a ambos.
*corresponde a zero ou mais caracteres.?corresponde a exatamente um caractere.**é um globstar que atravessa qualquer número de segmentos de pasta quando aparece entre barras.- Os curingas são interpretados dentro de um único token:
*.rs— qualquer nome que termina em.rs.report-??.txt—report-01.txt,report-AB.txt, etc.a*b— nomes que começam comae terminam comb.src/**/Cargo.toml—Cargo.tomlem qualquer lugar abaixo desrc/.
- Se precisar de
*ou?literal, coloque o token entre aspas:"*.rs". Globstars devem ser segmentos de barra independentes (foo/**/bar,/Users/**,**/notes).
Cardinal entende “segmentos com barra” dentro de um token e classifica cada segmento como correspondência de prefixo/sufixo/exata/substring nos componentes do caminho. Exemplos:
elloworl → Substring("elloworl")
/root → Prefix("root")
root/ → Suffix("root")
/root/ → Exact("root")
/root/bar → Exact("root"), Prefix("bar")
/root/bar/kksk → Exact("root"), Exact("bar"), Prefix("kksk")
foo/bar/kks → Suffix("foo"), Exact("bar"), Prefix("kks")
gaea/lil/bee/ → Suffix("gaea"), Exact("lil"), Exact("bee")
bab/bob/ → Suffix("bab"), Exact("bob")
/byb/huh/good/ → Exact("byb"), Exact("huh"), Exact("good")
Isso permite expressar:
- “A pasta deve terminar com X” (
foo/), - “A pasta deve começar com X” (
/foo), - “Nome exato de pasta no meio do caminho” (
gaea/lil/bee/).
Cardinal segue a precedência do Everything:
NOT/!tem a precedência mais alta,OR/|em seguida,ANDimplícito / explícito (“espaço”) tem a menor precedência.
| Sintaxe | Significado |
|---|---|
foo bar |
foo AND bar — ambos os tokens devem corresponder. |
foo|bar |
foo OR bar — qualquer um pode corresponder. |
foo OR bar |
Forma escrita de ` |
!temp |
NOT temp — exclui correspondências. |
NOT temp |
Igual a !temp. |
( ... ) |
Agrupamento com parênteses. |
< ... > |
Agrupamento com colchetes angulares (estilo Everything). |
Exemplos de precedência:
foo bar|baz # analisado como foo AND (bar OR baz)
!(ext:zip report) # exclui itens onde ext:zip E “report” correspondem
good (<src|tests> ext:rs)
# good AND ((src OR tests) AND ext:rs)
Use parênteses ou <...> sempre que quiser substituir a precedência padrão.
Esta seção lista apenas os filtros que o mecanismo atual realmente avalia.
Nota: os argumentos de filtro devem vir imediatamente após os dois-pontos (
ext:jpg,parent:/Users/demo). Escreverfile: *.mdinsere um espaço em branco, então o Cardinal trata isso como um filtrofile:(sem argumento) seguido do token separado*.md.
| Filtro | Significado | Exemplo |
|---|---|---|
file: |
Somente arquivos (não pastas) | file: report |
folder: |
Somente pastas | folder:Projects |
Eles podem ser combinados com outros termos:
folder:Pictures vacation
file: invoice dm:pastyear
ext:aceita uma ou mais extensões separadas por;:ext:jpg— imagens JPEG.ext:jpg;png;gif— tipos comuns de imagem para web.
- A correspondência não diferencia maiúsculas/minúsculas e não inclui o ponto.
Exemplos:
ext:md content:"TODO"
ext:pdf briefing parent:/Users/demo/Reports
ext:png;jpg travel|vacation
| Filtro | Significado | Exemplo |
|---|---|---|
parent: |
Apenas filhos diretos da pasta indicada | parent:/Users/demo/Documents ext:md |
infolder:/in: |
Qualquer descendente da pasta indicada (recursivo) | in:/Users/demo/Projects report draft |
nosubfolders: |
A pasta em si mais os arquivos filhos diretos (sem subpastas) | nosubfolders:/Users/demo/Projects ext:log |
Esses filtros recebem um caminho absoluto como argumento; um ~ inicial é expandido para a pasta home do usuário.
type: agrupa extensões de arquivo em categorias semânticas. As categorias suportadas (sem diferenciação de maiúsculas/minúsculas, com sinônimos) incluem:
- Imagens:
type:picture,type:pictures,type:image,type:images,type:photo,type:photos - Vídeo:
type:video,type:videos,type:movie,type:movies - Áudio:
type:audio,type:audios,type:music,type:song,type:songs - Documentos:
type:doc,type:docs,type:document,type:documents,type:text,type:office - Apresentações:
type:presentation,type:presentations,type:ppt,type:slides - Planilhas:
type:spreadsheet,type:spreadsheets,type:xls,type:excel,type:sheet,type:sheets - PDF:
type:pdf - Arquivos compactados:
type:archive,type:archives,type:compressed,type:zip - Código:
type:code,type:source,type:dev - Executáveis:
type:exe,type:exec,type:executable,type:executables,type:program,type:programs,type:app,type:apps
Exemplos:
type:picture vacation
type:code "Cardinal"
type:archive dm:pastmonth
Atalhos para casos comuns de type::
| Macro | Equivalente a | Exemplo |
|---|---|---|
audio: |
type:audio |
audio: piano |
video: |
type:video |
video: tutorial |
doc: |
type:doc |
doc: invoice dm:2024 |
exe: |
type:exe |
exe: "Cardinal" |
As macros aceitam um argumento opcional:
audio:soundtrack
video:"Keynote"
size: suporta:
- Comparações:
>,>=,<,<=,=,!= - Intervalos:
min..max - Palavras-chave:
empty,tiny,small,medium,large,huge,gigantic,giant - Unidades: bytes (
b), kilobytes (k,kb,kib,kilobyte[s]), megabytes (m,mb,mib,megabyte[s]), gigabytes (g,gb,gib,gigabyte[s]), terabytes (t,tb,tib,terabyte[s]), petabytes (p,pb,pib,petabyte[s]).
Exemplos:
size:>1GB # maior que 1 GB
size:1mb..10mb # entre 1 MB e 10 MB
size:tiny # 0–10 KB (intervalo aproximado por palavra-chave)
size:empty # exatamente 0 bytes
dm:/datemodified:— data de modificação.dc:/datecreated:— data de criação.
Eles aceitam:
-
Palavras-chave (intervalos relativos):
today,yesterdaythisweek,lastweekthismonth,lastmonththisyear,lastyearpastweek,pastmonth,pastyear
-
Datas absolutas:
YYYY-MM-DD,YYYY/MM/DD,YYYY.MM.DD- Também suporta formatos comuns dia‑primeiro / mês‑primeiro como
DD-MM-YYYYeMM/DD/YYYY.
-
Intervalos e comparações:
- Intervalos:
dm:2024-01-01..2024-12-31 - Comparações:
dm:>=2024-01-01,dc:<2023/01/01
- Intervalos:
Exemplos:
dm:today # modificado hoje
dc:lastyear # criado no ano calendário passado
dm:2024-01-01..2024-03-31 # modificado no 1º trimestre de 2024
dm:>=2024/01/01 # modificado a partir de 2024-01-01
regex: trata o restante do token como uma expressão regular aplicada a um componente do caminho (nome de arquivo ou pasta).
Exemplos:
regex:^README\\.md$ parent:/Users/demo
regex:Report.*2025
O toggle de sensibilidade a maiúsculas/minúsculas da UI afeta a correspondência de regex.
content: varre o conteúdo do arquivo em busca de uma substring simples:
- Não há regex dentro de
content:— é uma correspondência de substring por bytes. - A sensibilidade a maiúsculas/minúsculas segue o toggle da UI:
- No modo sem diferenciação, o mecanismo coloca em minúsculas tanto a agulha quanto os bytes analisados.
- No modo com diferenciação, os bytes são comparados como estão.
- Agulhas muito pequenas são permitidas, mas
""(vazia) é rejeitada.
Exemplos:
*.md content:"Bearer "
ext:md content:"API key"
in:/Users/demo/Projects content:deadline
type:doc content:"Q4 budget"
A correspondência de conteúdo é feita em streaming pelo arquivo; sequências multibyte podem atravessar limites de buffer.
Filtra por tags do Finder (macOS). O Cardinal busca tags sob demanda a partir dos metadados do arquivo (sem cache) e, para conjuntos grandes de resultados, usa mdfind para reduzir candidatos antes de aplicar a correspondência de tags.
- Aceita uma ou mais tags separadas por
;(OR lógico):tag:ProjectA;ProjectB. - Encadeie vários filtros
tag:(AND lógico) para combinar várias tags:tag:Project tag:Important. - A sensibilidade a maiúsculas/minúsculas segue o toggle da UI.
- Corresponde a nomes de tags por substring:
tag:projcorresponde aProjecteproject.
Exemplos:
tag:Important
t:Urgent
tag:ProjectA;ProjectB report
tag:Project tag:Archive report
in:/Users/demo/Documents tag:"Q4"
Algumas combinações realistas:
# Notas Markdown em Documents (sem PDFs)
parent:/Users/demo/Documents ext:md
parent:/Users/demo/Documents !ext:pdf
# PDFs em Reports mencionando “briefing”
ext:pdf briefing parent:/Users/demo/Reports
# Fotos de férias
type:picture vacation
ext:png;jpg travel|vacation
# Arquivos de log recentes dentro de uma árvore de projeto
in:/Users/demo/Projects ext:log dm:pastweek
# Scripts de shell diretamente na pasta Scripts
parent:/Users/demo/Scripts *.sh
# Tudo com “Application Support” no caminho
"Application Support"
# Corresponder a um nome de arquivo específico via regex
regex:^README\\.md$ parent:/Users/demo
# Excluir PSDs em qualquer lugar sob /Users
in:/Users demo!.psd
Use esta página como a lista oficial de operadores e filtros que o mecanismo implementa hoje; recursos adicionais do Everything (como datas de acesso/execução ou filtros baseados em atributos) são analisados no nível de sintaxe, mas atualmente são rejeitados durante a avaliação.