Cardinal'ın sorgu dili Everything sözdizimine bilinçli olarak yakındır, ancak mevcut motorun gerçekten uyguladıklarını yansıtır. Bu sayfa, Rust arka ucunun bugün anladıklarına ilişkin resmi referanstır.
English · Español · 한국어 · Русский · 简体中文 · 繁體中文 · Português · Italiano · 日本語 · Français · Deutsch · Українська · العربية · हिन्दी · Türkçe
- Her sorgu şu öğelerden oluşan bir ağaca ayrıştırılır:
- Kelimeler / ifadeler (düz metin, tırnaklı dizgeler, jokerler),
- Filtreler (
ext:,type:,dm:,content:, …), - Mantıksal operatörler (
AND,OR,NOT/!).
- Eşleştirme, her dizinlenmiş dosyanın yalnızca taban adıyla değil, tam yoluyla yapılır.
- Büyük/küçük harf duyarlılığı UI anahtarıyla kontrol edilir:
- Büyük/küçük harfe duyarsız modda, motor ad/içerik eşleşmeleri için hem sorguyu hem adayları küçültür.
- Büyük/küçük harfe duyarlı modda, motor baytları olduğu gibi karşılaştırır.
Hızlı örnekler:
report draft # yolu hem “report” hem “draft” içeren dosyalar
ext:pdf briefing # adı “briefing” içeren PDF dosyaları
parent:/Users demo!.psd # /Users altında .psd dosyalarını hariç tut
regex:^Report.*2025$ # bir regex'e uyan adlar
ext:png;jpg travel|vacation # adı “travel” veya “vacation” içeren PNG ya da JPG
- Tırnaksız bir belirteç, yolda alt dize eşleşmesidir:
demo,/Users/demo/Projects/cardinal.mdile eşleşir.
- Çift tırnaklı ifadeler, boşluklar dahil tam diziyi eşleştirir:
"Application Support",/Library/Application Support/...ile eşleşir.
- UI büyük/küçük harf anahtarı ikisine de uygulanır.
*sıfır veya daha fazla karakterle eşleşir.?tam olarak bir karakterle eşleşir.**, eğik çizgiler arasında göründüğünde herhangi sayıda klasör segmentini geçen bir globstar'dır.- Jokerler tek bir belirteç içinde yorumlanır:
*.rs—.rsile biten herhangi bir ad.report-??.txt—report-01.txt,report-AB.txtvb.a*b—aile başlayıpbile biten adlar.src/**/Cargo.toml—src/altında herhangi bir yerdeCargo.toml.
- Harfiyen
*veya?gerekiyorsa belirteci tırnaklayın:"*.rs". Globstar'lar bağımsız eğik çizgi segmentleri olmalıdır (foo/**/bar,/Users/**,**/notes).
Cardinal, bir belirteç içindeki “eğik çizgi segmentlerini” anlar ve her segmenti yol bileşenlerinde önek/sonek/tam/alt dize eşleşmesi olarak sınıflandırır. Örnekler:
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")
Bu sayede şunları ifade edebilirsiniz:
- “Klasör X ile bitmeli” (
foo/), - “Klasör X ile başlamalı” (
/foo), - “Yolun ortasında tam klasör adı” (
gaea/lil/bee/).
Cardinal, Everything'nin öncelik sırasını izler:
NOT/!en sıkı bağlanır,OR/|sonraki,- örtük / açık
AND(“boşluk”) en düşük önceliğe sahiptir.
| Sözdizimi | Anlamı |
|---|---|
foo bar |
foo AND bar — her iki belirteç eşleşmelidir. |
foo|bar |
foo OR bar — ikisinden biri eşleşebilir. |
foo OR bar |
` |
!temp |
NOT temp — eşleşmeleri hariç tutar. |
NOT temp |
!temp ile aynıdır. |
( ... ) |
Parantezlerle gruplama. |
< ... > |
Köşeli ayraçlarla gruplama (Everything tarzı). |
Öncelik örnekleri:
foo bar|baz # foo AND (bar OR baz) olarak ayrıştırılır
!(ext:zip report) # ext:zip ve “report” her ikisinin eşleştiği öğeleri hariç tutar
good (<src|tests> ext:rs)
# good AND ((src OR tests) AND ext:rs)
Varsayılan önceliği değiştirmek istediğinizde parantez veya <...> kullanın.
Bu bölüm yalnızca mevcut motorun gerçekten değerlendirdiği filtreleri listeler.
Not: filtre argümanları iki noktadan hemen sonra gelmelidir (
ext:jpg,parent:/Users/demo).file: *.mdyazmak boşluk ekler; bu yüzden Cardinal bunufile:filtresi (argüman yok) ve ardından ayrı bir*.mdbelirteci olarak yorumlar.
| Filtre | Anlamı | Örnek |
|---|---|---|
file: |
Yalnızca dosyalar (klasör değil) | file: report |
folder: |
Yalnızca klasörler | folder:Projects |
Bunlar diğer terimlerle birleştirilebilir:
folder:Pictures vacation
file: invoice dm:pastyear
ext:,;ile ayrılmış bir veya daha fazla uzantı kabul eder:ext:jpg— JPEG görüntüler.ext:jpg;png;gif— yaygın web görüntü türleri.
- Eşleşme büyük/küçük harfe duyarlı değildir ve noktayı içermez.
Örnekler:
ext:md content:"TODO"
ext:pdf briefing parent:/Users/demo/Reports
ext:png;jpg travel|vacation
| Filtre | Anlamı | Örnek |
|---|---|---|
parent: |
Yalnızca belirtilen klasörün doğrudan çocukları | parent:/Users/demo/Documents ext:md |
infolder:/in: |
Belirtilen klasörün herhangi bir alt öğesi (özyinelemeli) | in:/Users/demo/Projects report draft |
nosubfolders: |
Klasörün kendisi + doğrudan dosya çocukları (alt klasör yok) | nosubfolders:/Users/demo/Projects ext:log |
Bu filtreler argüman olarak mutlak yol alır; baştaki ~ kullanıcı ana dizinine genişletilir.
type:, dosya uzantılarını anlamsal kategorilere gruplar. Desteklenen kategoriler (büyük/küçük harf duyarsız, eşanlamlılarla) şunlardır:
- Görseller:
type:picture,type:pictures,type:image,type:images,type:photo,type:photos - Video:
type:video,type:videos,type:movie,type:movies - Ses:
type:audio,type:audios,type:music,type:song,type:songs - Belgeler:
type:doc,type:docs,type:document,type:documents,type:text,type:office - Sunumlar:
type:presentation,type:presentations,type:ppt,type:slides - Elektronik tablolar:
type:spreadsheet,type:spreadsheets,type:xls,type:excel,type:sheet,type:sheets - PDF:
type:pdf - Arşivler:
type:archive,type:archives,type:compressed,type:zip - Kod:
type:code,type:source,type:dev - Çalıştırılabilirler:
type:exe,type:exec,type:executable,type:executables,type:program,type:programs,type:app,type:apps
Örnekler:
type:picture vacation
type:code "Cardinal"
type:archive dm:pastmonth
Yaygın type: durumları için kısayollar:
| Makro | Karşılığı | Örnek |
|---|---|---|
audio: |
type:audio |
audio: piano |
video: |
type:video |
video: tutorial |
doc: |
type:doc |
doc: invoice dm:2024 |
exe: |
type:exe |
exe: "Cardinal" |
Makrolar isteğe bağlı bir argüman kabul eder:
audio:soundtrack
video:"Keynote"
size: şunları destekler:
- Karşılaştırmalar:
>,>=,<,<=,=,!= - Aralıklar:
min..max - Anahtar sözcükler:
empty,tiny,small,medium,large,huge,gigantic,giant - Birimler: 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]).
Örnekler:
size:>1GB # 1 GB'den büyük
size:1mb..10mb # 1 MB ile 10 MB arası
size:tiny # 0–10 KB (yaklaşık anahtar sözcük aralığı)
size:empty # tam olarak 0 bayt
dm:/datemodified:— değiştirilme tarihi.dc:/datecreated:— oluşturulma tarihi.
Şunları kabul eder:
-
Anahtar sözcükler (göreli aralıklar):
today,yesterdaythisweek,lastweekthismonth,lastmonththisyear,lastyearpastweek,pastmonth,pastyear
-
Kesin tarihler:
YYYY-MM-DD,YYYY/MM/DD,YYYY.MM.DDDD-MM-YYYYveMM/DD/YYYYgibi yaygın gün‑önce / ay‑önce biçimlerini de destekler.
-
Aralıklar ve karşılaştırmalar:
- Aralıklar:
dm:2024-01-01..2024-12-31 - Karşılaştırmalar:
dm:>=2024-01-01,dc:<2023/01/01
- Aralıklar:
Örnekler:
dm:today # bugün değiştirilmiş
dc:lastyear # geçen takvim yılında oluşturulmuş
dm:2024-01-01..2024-03-31 # 2024 Q1 içinde değiştirilmiş
dm:>=2024/01/01 # 2024-01-01 ve sonrasında değiştirilmiş
regex:, belirtecin geri kalanını yol bileşenine (dosya veya klasör adı) uygulanan bir düzenli ifade olarak ele alır.
Örnekler:
regex:^README\\.md$ parent:/Users/demo
regex:Report.*2025
UI büyük/küçük harf anahtarı regex eşleşmesini etkiler.
content:, dosya içeriklerini düz bir alt dize için tarar:
content:içinde regex yoktur — bayt alt dize eşleşmesidir.- Büyük/küçük harf duyarlılığı UI anahtarını takip eder:
- Büyük/küçük harfe duyarsız modda, hem aranan dize hem taranan baytlar küçültülür.
- Büyük/küçük harfe duyarlı modda, baytlar olduğu gibi karşılaştırılır.
- Çok kısa dizeler kabul edilir, ancak
""(boş) reddedilir.
Örnekler:
*.md content:"Bearer "
ext:md content:"API key"
in:/Users/demo/Projects content:deadline
type:doc content:"Q4 budget"
İçerik eşleştirme dosya üzerinde akış halinde yapılır; çok baytlı diziler tampon sınırlarını aşabilir.
Finder etiketlerine (macOS) göre filtreler. Cardinal, etiketleri dosyanın meta verilerinden istek üzerine alır (önbellek yoktur) ve büyük sonuç kümelerinde etiket eşleşmesini uygulamadan önce adayları daraltmak için mdfind kullanır.
;ile ayrılmış bir veya daha fazla etiket kabul eder (mantıksal OR):tag:ProjectA;ProjectB.- Birden fazla
tag:filtresini (mantıksal AND) zincirleyerek çoklu etiket eşleşmesi yapabilirsiniz:tag:Project tag:Important. - Büyük/küçük harf duyarlılığı UI anahtarını takip eder.
- Etiket adları alt dize eşleşmesiyle bulunur:
tag:proj,Projectveprojectile eşleşir.
Örnekler:
tag:Important
t:Urgent
tag:ProjectA;ProjectB report
tag:Project tag:Archive report
in:/Users/demo/Documents tag:"Q4"
Bazı gerçekçi kombinasyonlar:
# Documents içinde Markdown notları (PDF yok)
parent:/Users/demo/Documents ext:md
parent:/Users/demo/Documents !ext:pdf
# Reports içinde “briefing” geçen PDF'ler
ext:pdf briefing parent:/Users/demo/Reports
# Tatil fotoğrafları
type:picture vacation
ext:png;jpg travel|vacation
# Proje ağacı içinde yakın tarihli log dosyaları
in:/Users/demo/Projects ext:log dm:pastweek
# Scripts klasörü altında doğrudan shell betikleri
parent:/Users/demo/Scripts *.sh
# Yolda “Application Support” olan her şey
"Application Support"
# Regex ile belirli bir dosya adını eşleştir
regex:^README\\.md$ parent:/Users/demo
# /Users altında her yerde PSD'leri hariç tut
in:/Users demo!.psd
Bu sayfayı, motorun bugün uyguladığı operatörler ve filtreler için yetkili liste olarak kullanın; Everything’nin ek özellikleri (erişim/çalıştırma tarihleri veya öznitelik tabanlı filtreler gibi) sözdizimi düzeyinde ayrıştırılır ancak şu anda değerlendirme sırasında reddedilir.