雖然我們已經有Everything/es.exe (Windows)、Spotlight、fzf、locate等命令可以快速搜尋到檔案,但要充份掌握好複雜多樣的選項可是要花很多功夫。

fselect可以用類似SQL的語法來搜尋檔案,讓我們有了簡化命令選項複雜度的方案。

命令格式:

fselect [ARGS] COLUMN[, COLUMN...] [from ROOT[, ROOT...]] [where EXPR] [order by COLUMNS] [limit N] [into FORMAT]

 

  • 語法參考
  • 除非夾有空白,否則字串值可不加單引號
  • 可用雙引號夾住命令選項,以防有 >< 等特殊符號
  • > 比對符號可用 gt 取代,>= 比對符號可用 gte 取代,以此類推
  • 可與more、fzf等合用

範例

計算某資料夾裡的檔案數

fselect Count(1) from j:\JERRY\MOC
fselect Count(1) from j:\JERRY\MOC where name='*.md'
fselect Count(1) from j:\JERRY\MOC where IS_FILE=true
fselect Count(1) from j:\JERRY\MOC where IS_DIR=true

找出某資料夾與日期相關的檔案

fselect path from j:\JERRY\MOC where created = yesterday
fselect path from j:\JERRY\MOC where modified = today
fselect "modified,path from j:\JERRY\MOC where modified > '2020-11-07 14:50'"

找出某資料夾裡檔名有中文的列表

fselect * from j:\JERRY\MOC where CONTAINS_JAPANESE(name)=true
fselect * from j:\JERRY\MOC where kanji(name)=1

搜尋出的檔案過多時,可與more或fzf合用

fselect * from j:\JERRY\MOC where kanji(name)=1 | fzf

找出資料夾裡大小最大的20個檔案

fselect modified,size,path from j:\JERRY\MOC,j:\jerry\blog order by size desc limit 20

使用函數;檔案大小用K表示

fselect name, format_size(size,'k') from J:\jerry\moc where name=*.md order by size desc limit 20

把結果儲存起來

fselect name, format_size(size,'k') from J:\jerry\moc where name=*.md order by size desc limit 20 into html > z:\test\output.html

排除特定目錄

fselect path from j:\JERRY\MOC where modified = today and path !=  '*.obsidian*'

fselect path from j:\JERRY\MOC where modified = today and path not like '%.obsidian%'

```

更進階與複雜的用法請自行參考使用說明。

相關連結

教學影片

##

0
0