Skip to content

ToniXWD/file_elf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

file_elf 常用文件查询工具

file_elf 是一款轻量级的文件查询工具,旨在帮助用户快速查找本地计算机上的文件。它支持精确匹配、模糊匹配、正则查找的搜索方式,并提供了复制路径、打开文件/目录的功能。file_elf只会对监控到修改的文件进行索引的建立(这是判断常用文件的依据, 也是设计思路),因此不会进行全盘扫描而占用过多的系统资源。

example

操作说明

  • 搜索模式选项说明
    • Fuzzy: 是否模糊匹配, 默认不开启, 该模式随输入框键入自动搜索
    • Regex: 是否正则匹配搜索, 默认开启, 该模式随输入框键入自动搜索
      • 为了简化使用, 让不懂正则表达式的朋友们的操作, 默认情况下会在输入的正则表达式前后加入 .*
      • 例如输入 steamapps搜索等同于输入 .*steamapps.*搜索, 可以输入 steamapps$显式去除该默认行为
    • Smart Mode: 会搜索缓存路径上的热点文件夹, 该模式消耗更多系统资源, 因此不随输入框键入自动搜索, 需要手动点击 button或键入 enter
      • 若存在 /a/b/c缓存, 则会在热点文件夹 b, a中搜索目标, 此模式耗时较长
  • 搜索结果操作
    • 打开文件或文件夹、VSCode打开
    • 通过⭐或☆按钮加入缓存或者从缓存中删除
  • 快捷键操作
    • Ctrl F1: 隐藏到托盘/唤出 APP

配置文件

# ************************************ Windwos ************************************
[database]
dbtype = "sqlite"
path = "sqlite3.db"
targets = [
    "C:\\Users\\toni\\OneDrive",
    "D:\\",
    "E:\\",
    "F:\\",
    "G:\\",
    "H:\\",
] # 指定监听的文件路径前缀, C盘数据读写频繁, 建议不要直接监听C的根目录
blacklist = [
    # ******************* 开发黑名单 ********************
    ".*build.*",
    ".*target.*",
    ".*[Cc]ache.*",         # 缓存文件夹
    ".*\\.git.*",           # git仓库
    ".*\\.vscode.*",        # VSCode项目配置信息
    ".*\\.idea.*",          # jetbrain项目配置信息
    ".*node_modules.*",     # node_modules, node的package, 数量太多
    ".*\\$RECYCLE\\.BIN.*", # 回收站

    # ******************* 微信黑名单 ********************
    ".*WeChat Files\\\\.*\\\\Msg.*",                          # 微信的消息记录
    ".*WeChat Files\\\\.*\\\\config.*",                       # 微信的配置信息
    ".*WeChat Files\\\\.*\\\\FileStorage\\\\MsgAttach.*",     # 微信文件附属消息
    ".*WeChat Files\\\\.*\\\\FileStorage\\\\CustomEmotion.*", # 微信的表情

    # ******************* QQ黑名单 ********************
    ".*QQ files.*\\\\nt_qq.*\\\\nt_db.*",   # QQ本地数据库
    ".*QQ files.*\\\\nt_qq.*\\\\nt_temp.*", # QQ临时数据
    ".*QQ files.*\\\\nt_qq.*\\\\nt_data*",  # QQ数据


    # ******************* 自定义黑名单 ********************
    ".*file_elf.*", # 滤除工具本身

] # 黑名单列表,支持使用正则表达式
hotdirnum = 100
log_level = "trace" # 日志级别
# 注意, windows中使用\\表示分隔符, \需要\\转义, 因此正则表达式中的分隔符为\\\\


# ************************************ Linux or MacOS ************************************
# [database]
# dbtype = "sqlite" # 数据库类型
# path = "/home/toni/proj/file_elf/sqlite3.db" # 数据库文件路径
# targets = ["/home/toni/Course", "/home/toni/proj"] # 监控目录
# blacklist = [".*/build/.*", ".*/target/.*", ".*file_elf.*"] # 黑名单列表,支持使用正则表达式
# hotdirnum = 100
# log_level = "info" # 日志级别

功能 && TODO

最新的功能可能还没有发布到Release, 需要本地编译

  • 快速搜索本地文件, 使用 Trie树索引文件
  • 支持配置文件添加路径白名单
  • 支持配置文件添加路径黑名单(正则表达式)
  • 支持模糊搜索和正则匹配
  • 支持热点文件夹查询(Smart Search)
  • 支持搜索结果的动作: 打开文件、打开文件夹、复制路径
  • 支持添加(⭐)or删除(☆)搜索到的记录项
  • 支持使用 VSCode打开搜索结果项
  • 配置文件黑名单和过滤规则
  • 支持本地日志输出和日志过滤级别
  • 重启时检查数据库记录是否有效
  • 实现 app单例, 避免重复打开
  • 前端后端使用更高效的 IPC通信, 而不占用本地3000端口(直接使用 tauri自带的 ipc)
  • 支持本地日志输出和轮转
  • 随输入框键入自动搜索
  • 支持配置文件热重载
  • 支持剥离关系型数据库 sqlite3存储, 创建自定义的文件格式存储
  • 配置文件支持自定义数据库(目前使用 sqlite3)
  • 搜索项支持系统级别的更多操作(仅 windows)
  • 客户端界面优化: 设定默认聚焦组件 && table 切换 && Enter 默认行为

安装和开发

1 直接下载编译文件

Release中下载

2 本地编译

环境依赖

  • 后端使用Rust开发, 要求版本1.81及以上
  • 客户端使用tauri 2.0react开发
  • 数据库使用 sqlite3存储, 如果本地已经安装了 sqlite3并添加 dllso到环境变量, 可以在 tauri.conf.jsonresources中删除动态库的资源依赖

Windows

.\build.ps1 -Build # 编译客户端和服务端
.\build.ps1 -Publish # 打包编译产物和配置文件

publish中可以看到 search-files-app.exe文件, 双击运行即可, 同时还会生成 search-files-app_0.11.0_x64_en-US.msisearch-files-app_0.11.0_x64-setup.exe安装程序

Linux or MacOS

Linux or MacOS 需要更改 app/search-files-app/src-tauri/tauri.conf.json中的 resources中的 sqlite3.dlllibsqlite3.so

make all # 编译客户端和服务端
make publish # 打包编译产物和配置文件

publish中可以看到 search-files-app文件, 双击运行即可