# Everything Search for macOS
🚀 高性能文件搜索工具 - 类似于Windows Everything的macOS解决方案
[](https://www.python.org/downloads/)
[](LICENSE)
[](https://www.apple.com/macos/)

## ✨ 特性
- 🔍 **极速搜索** - 毫秒级文件搜索响应
- 📊 **智能索引** - 增量索引和实时文件系统监控
- 🎯 **多种搜索模式** - 支持模糊搜索、正则表达式、文件类型过滤
- 🖥️ **双界面支持** - 现代化GUI界面和强大的命令行工具
- ⚡ **高性能** - 多线程并发处理,优化的数据库查询
- 🔄 **实时同步** - 文件系统变更实时更新索引
## 📦 安装
### 方式1:使用 uv tool(推荐)
```bash
# 安装
uv tool install everything-search
# 启动GUI
everything-search
# 使用CLI
everything-index start
everything-cli "keyword"
# 卸载
uv tool uninstall everything-search
```
### 方式2:从源码安装
```bash
# 克隆仓库
git clone https://github.com/duolabmeng6/everything-for-mac.git
cd everything-for-mac
# 使用uv tool安装到系统
uv tool install .
# 然后就可以使用系统命令了
everything-search # 启动GUI
everything-index start # 启动索引服务
everything-cli "keyword" # 搜索文件
# 卸载
uv tool uninstall everything-search
```
## 🚀 快速开始
### 命令行搜索
```bash
# 初始化索引后才可以搜索
everything-index start
# 基本搜索(直接搜索)
everything-cli "document"
# 正则表达式搜索
everything-cli "*.py" --regex
# 按文件类型搜索
everything-cli extension py
# 按文件大小搜索
everything-cli size --min-size 100M
# 搜索最近修改的文件
everything-cli recent --days 7
# 传统子命令方式(向后兼容)
everything-cli search "document"
```
## 🎯 快速命令参考
| 功能 | 命令 | 说明 |
|------|------|------|
| 安装工具 | `uv tool install everything-search` | 安装到系统 |
| 卸载工具 | `uv tool uninstall everything-search` | 从系统卸载 |
| 启动GUI | `everything-search` | 启动图形界面 |
| 初始化索引 | `everything-index init` | 首次建立文件索引 |
| 自动启动服务 | `everything-index start` | 自动初始化+增量更新+实时监控 |
| 查看索引状态 | `everything-index status` | 显示索引统计信息 |
| 基本搜索 | `everything-cli "keyword"` | 搜索包含关键词的文件 |
| 正则搜索 | `everything-cli "*.py" --regex` | 使用正则表达式搜索 |
| 按类型搜索 | `everything-cli extension py` | 搜索指定扩展名的文件 |
| 按大小搜索 | `everything-cli size --min-size 100M` | 搜索大于指定大小的文件 |
## 📖 详细使用
### GUI界面
启动GUI后,您可以:
1. **搜索页面**:
- 在搜索框中输入关键词
- 支持实时搜索结果预览
- 可按文件名、大小、修改时间排序
- 右键菜单支持打开文件/文件夹
2. **设置页面**:
- 管理索引目录
- 配置排除规则
- 查看索引状态
- 启动/停止实时监控
### 命令行工具
#### 索引管理 (everything-index)
```bash
# 查看帮助
everything-index --help
# 初始化索引
everything-index init
# 自动启动(初始化+增量更新+实时监控)
everything-index start
# 重建索引
everything-index rebuild
# 启动实时监控
everything-index watch
# 查看索引状态
everything-index status
# 配置管理
everything-index config show
everything-index config add-dir ~/Documents
```
#### 文件搜索 (everything-cli)
```bash
# 查看帮助
everything-cli --help
# 基本搜索(直接搜索)
everything-cli "keyword"
# 高级搜索选项
everything-cli "pattern" --regex --limit 100
# 按扩展名搜索
everything-cli extension py
# 按大小搜索
everything-cli size --min-size 1M --max-size 100M
# 最近文件
everything-cli recent --days 30
# 搜索并打开
everything-cli open "config"
# 显示统计信息
everything-cli stats --extensions
# 传统子命令方式(向后兼容)
everything-cli search "keyword"
```
## ⚙️ 配置
配置文件位置:`~/.everything-search/config.json`
主要配置项:
```json
{
"index": {
"directories": ["/Users/username/Documents", "/Users/username/Desktop"],
"exclude_dirs": [".git", "node_modules", ".venv"],
"exclude_extensions": [".tmp", ".log"],
"max_file_size_mb": 1000,
"follow_symlinks": false,
"index_hidden_files": false
},
"search": {
"case_sensitive": false,
"fuzzy_search": true,
"max_results": 1000
}
}
```
### 项目结构
```
everything-search/
├── everything_search/ # 主包
│ ├── core/ # 核心模块
│ │ ├── config_manager.py # 配置管理
│ │ ├── database.py # 数据库操作
│ │ ├── file_indexer.py # 文件索引
│ │ ├── search_engine.py # 搜索引擎
│ │ └── file_watcher.py # 文件监控
│ ├── cli/ # 命令行工具
│ │ ├── index_cli.py # 索引管理CLI
│ │ └── search_cli.py # 搜索CLI
│ ├── gui/ # GUI界面
│ │ ├── main_window.py # 主窗口
│ │ ├── search_tab.py # 搜索页面
│ │ └── settings_tab.py # 设置页面
│ └── gui_main.py # GUI启动脚本
├── pyproject.toml # 项目配置
└── README.md # 项目说明
```
## 🤝 贡献
欢迎提交Issue和Pull Request!
1. Fork 项目
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 打开Pull Request
## 📄 许可证
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情
## 🙏 致谢
- 灵感来源于Windows平台的Everything搜索工具
- 使用了优秀的开源库:PySide6、watchdog等
## 📞 联系
- 作者:duolabmeng6
- 邮箱:1715109585@qq.com
- 项目链接:https://github.com/duolabmeng6/everything-for-mac
---
⭐ 如果这个项目对您有帮助,请给个Star支持一下!
# 打赏

Raw data
{
"_id": null,
"home_page": null,
"name": "everything-search",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "desktop, everything, file-search, gui, indexing, macos, search-engine",
"author": null,
"author_email": "duolabmeng6 <1715109585@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/74/34/37a044635e4c68e7e1846062c2d5c8cca3ad9cd15e446223d3cff8844b51/everything_search-1.0.2.tar.gz",
"platform": null,
"description": "# Everything Search for macOS\n\n\ud83d\ude80 \u9ad8\u6027\u80fd\u6587\u4ef6\u641c\u7d22\u5de5\u5177 - \u7c7b\u4f3c\u4e8eWindows Everything\u7684macOS\u89e3\u51b3\u65b9\u6848\n\n[](https://www.python.org/downloads/)\n[](LICENSE)\n[](https://www.apple.com/macos/)\n\n## \u2728 \u7279\u6027\n\n- \ud83d\udd0d **\u6781\u901f\u641c\u7d22** - \u6beb\u79d2\u7ea7\u6587\u4ef6\u641c\u7d22\u54cd\u5e94\n- \ud83d\udcca **\u667a\u80fd\u7d22\u5f15** - \u589e\u91cf\u7d22\u5f15\u548c\u5b9e\u65f6\u6587\u4ef6\u7cfb\u7edf\u76d1\u63a7\n- \ud83c\udfaf **\u591a\u79cd\u641c\u7d22\u6a21\u5f0f** - \u652f\u6301\u6a21\u7cca\u641c\u7d22\u3001\u6b63\u5219\u8868\u8fbe\u5f0f\u3001\u6587\u4ef6\u7c7b\u578b\u8fc7\u6ee4\n- \ud83d\udda5\ufe0f **\u53cc\u754c\u9762\u652f\u6301** - \u73b0\u4ee3\u5316GUI\u754c\u9762\u548c\u5f3a\u5927\u7684\u547d\u4ee4\u884c\u5de5\u5177\n- \u26a1 **\u9ad8\u6027\u80fd** - \u591a\u7ebf\u7a0b\u5e76\u53d1\u5904\u7406\uff0c\u4f18\u5316\u7684\u6570\u636e\u5e93\u67e5\u8be2\n- \ud83d\udd04 **\u5b9e\u65f6\u540c\u6b65** - \u6587\u4ef6\u7cfb\u7edf\u53d8\u66f4\u5b9e\u65f6\u66f4\u65b0\u7d22\u5f15\n\n## \ud83d\udce6 \u5b89\u88c5\n\n### \u65b9\u5f0f1\uff1a\u4f7f\u7528 uv tool\uff08\u63a8\u8350\uff09\n\n```bash\n# \u5b89\u88c5\nuv tool install everything-search\n\n# \u542f\u52a8GUI\neverything-search\n\n# \u4f7f\u7528CLI\neverything-index start\neverything-cli \"keyword\"\n\n# \u5378\u8f7d\nuv tool uninstall everything-search\n```\n\n### \u65b9\u5f0f2\uff1a\u4ece\u6e90\u7801\u5b89\u88c5\n\n```bash\n# \u514b\u9686\u4ed3\u5e93\ngit clone https://github.com/duolabmeng6/everything-for-mac.git\ncd everything-for-mac\n\n# \u4f7f\u7528uv tool\u5b89\u88c5\u5230\u7cfb\u7edf\nuv tool install .\n\n# \u7136\u540e\u5c31\u53ef\u4ee5\u4f7f\u7528\u7cfb\u7edf\u547d\u4ee4\u4e86\neverything-search # \u542f\u52a8GUI\neverything-index start # \u542f\u52a8\u7d22\u5f15\u670d\u52a1\neverything-cli \"keyword\" # \u641c\u7d22\u6587\u4ef6\n\n# \u5378\u8f7d\nuv tool uninstall everything-search\n```\n\n## \ud83d\ude80 \u5feb\u901f\u5f00\u59cb\n\n### \u547d\u4ee4\u884c\u641c\u7d22\n\n```bash\n# \u521d\u59cb\u5316\u7d22\u5f15\u540e\u624d\u53ef\u4ee5\u641c\u7d22\neverything-index start\n\n# \u57fa\u672c\u641c\u7d22\uff08\u76f4\u63a5\u641c\u7d22\uff09\neverything-cli \"document\"\n\n# \u6b63\u5219\u8868\u8fbe\u5f0f\u641c\u7d22\neverything-cli \"*.py\" --regex\n\n# \u6309\u6587\u4ef6\u7c7b\u578b\u641c\u7d22\neverything-cli extension py\n\n# \u6309\u6587\u4ef6\u5927\u5c0f\u641c\u7d22\neverything-cli size --min-size 100M\n\n# \u641c\u7d22\u6700\u8fd1\u4fee\u6539\u7684\u6587\u4ef6\neverything-cli recent --days 7\n\n# \u4f20\u7edf\u5b50\u547d\u4ee4\u65b9\u5f0f\uff08\u5411\u540e\u517c\u5bb9\uff09\neverything-cli search \"document\"\n```\n\n## \ud83c\udfaf \u5feb\u901f\u547d\u4ee4\u53c2\u8003\n\n| \u529f\u80fd | \u547d\u4ee4 | \u8bf4\u660e |\n|------|------|------|\n| \u5b89\u88c5\u5de5\u5177 | `uv tool install everything-search` | \u5b89\u88c5\u5230\u7cfb\u7edf |\n| \u5378\u8f7d\u5de5\u5177 | `uv tool uninstall everything-search` | \u4ece\u7cfb\u7edf\u5378\u8f7d |\n| \u542f\u52a8GUI | `everything-search` | \u542f\u52a8\u56fe\u5f62\u754c\u9762 |\n| \u521d\u59cb\u5316\u7d22\u5f15 | `everything-index init` | \u9996\u6b21\u5efa\u7acb\u6587\u4ef6\u7d22\u5f15 |\n| \u81ea\u52a8\u542f\u52a8\u670d\u52a1 | `everything-index start` | \u81ea\u52a8\u521d\u59cb\u5316+\u589e\u91cf\u66f4\u65b0+\u5b9e\u65f6\u76d1\u63a7 |\n| \u67e5\u770b\u7d22\u5f15\u72b6\u6001 | `everything-index status` | \u663e\u793a\u7d22\u5f15\u7edf\u8ba1\u4fe1\u606f |\n| \u57fa\u672c\u641c\u7d22 | `everything-cli \"keyword\"` | \u641c\u7d22\u5305\u542b\u5173\u952e\u8bcd\u7684\u6587\u4ef6 |\n| \u6b63\u5219\u641c\u7d22 | `everything-cli \"*.py\" --regex` | \u4f7f\u7528\u6b63\u5219\u8868\u8fbe\u5f0f\u641c\u7d22 |\n| \u6309\u7c7b\u578b\u641c\u7d22 | `everything-cli extension py` | \u641c\u7d22\u6307\u5b9a\u6269\u5c55\u540d\u7684\u6587\u4ef6 |\n| \u6309\u5927\u5c0f\u641c\u7d22 | `everything-cli size --min-size 100M` | \u641c\u7d22\u5927\u4e8e\u6307\u5b9a\u5927\u5c0f\u7684\u6587\u4ef6 |\n\n## \ud83d\udcd6 \u8be6\u7ec6\u4f7f\u7528\n\n### GUI\u754c\u9762\n\n\u542f\u52a8GUI\u540e\uff0c\u60a8\u53ef\u4ee5\uff1a\n\n1. **\u641c\u7d22\u9875\u9762**\uff1a\n - \u5728\u641c\u7d22\u6846\u4e2d\u8f93\u5165\u5173\u952e\u8bcd\n - \u652f\u6301\u5b9e\u65f6\u641c\u7d22\u7ed3\u679c\u9884\u89c8\n - \u53ef\u6309\u6587\u4ef6\u540d\u3001\u5927\u5c0f\u3001\u4fee\u6539\u65f6\u95f4\u6392\u5e8f\n - \u53f3\u952e\u83dc\u5355\u652f\u6301\u6253\u5f00\u6587\u4ef6/\u6587\u4ef6\u5939\n\n2. **\u8bbe\u7f6e\u9875\u9762**\uff1a\n - \u7ba1\u7406\u7d22\u5f15\u76ee\u5f55\n - \u914d\u7f6e\u6392\u9664\u89c4\u5219\n - \u67e5\u770b\u7d22\u5f15\u72b6\u6001\n - \u542f\u52a8/\u505c\u6b62\u5b9e\u65f6\u76d1\u63a7\n\n### \u547d\u4ee4\u884c\u5de5\u5177\n\n#### \u7d22\u5f15\u7ba1\u7406 (everything-index)\n\n```bash\n# \u67e5\u770b\u5e2e\u52a9\neverything-index --help\n\n# \u521d\u59cb\u5316\u7d22\u5f15\neverything-index init\n\n# \u81ea\u52a8\u542f\u52a8\uff08\u521d\u59cb\u5316+\u589e\u91cf\u66f4\u65b0+\u5b9e\u65f6\u76d1\u63a7\uff09\neverything-index start\n\n# \u91cd\u5efa\u7d22\u5f15\neverything-index rebuild\n\n# \u542f\u52a8\u5b9e\u65f6\u76d1\u63a7\neverything-index watch\n\n# \u67e5\u770b\u7d22\u5f15\u72b6\u6001\neverything-index status\n\n# \u914d\u7f6e\u7ba1\u7406\neverything-index config show\neverything-index config add-dir ~/Documents\n```\n\n#### \u6587\u4ef6\u641c\u7d22 (everything-cli)\n\n```bash\n# \u67e5\u770b\u5e2e\u52a9\neverything-cli --help\n\n# \u57fa\u672c\u641c\u7d22\uff08\u76f4\u63a5\u641c\u7d22\uff09\neverything-cli \"keyword\"\n\n# \u9ad8\u7ea7\u641c\u7d22\u9009\u9879\neverything-cli \"pattern\" --regex --limit 100\n\n# \u6309\u6269\u5c55\u540d\u641c\u7d22\neverything-cli extension py\n\n# \u6309\u5927\u5c0f\u641c\u7d22\neverything-cli size --min-size 1M --max-size 100M\n\n# \u6700\u8fd1\u6587\u4ef6\neverything-cli recent --days 30\n\n# \u641c\u7d22\u5e76\u6253\u5f00\neverything-cli open \"config\"\n\n# \u663e\u793a\u7edf\u8ba1\u4fe1\u606f\neverything-cli stats --extensions\n\n# \u4f20\u7edf\u5b50\u547d\u4ee4\u65b9\u5f0f\uff08\u5411\u540e\u517c\u5bb9\uff09\neverything-cli search \"keyword\"\n```\n\n## \u2699\ufe0f \u914d\u7f6e\n\n\u914d\u7f6e\u6587\u4ef6\u4f4d\u7f6e\uff1a`~/.everything-search/config.json`\n\n\u4e3b\u8981\u914d\u7f6e\u9879\uff1a\n\n```json\n{\n \"index\": {\n \"directories\": [\"/Users/username/Documents\", \"/Users/username/Desktop\"],\n \"exclude_dirs\": [\".git\", \"node_modules\", \".venv\"],\n \"exclude_extensions\": [\".tmp\", \".log\"],\n \"max_file_size_mb\": 1000,\n \"follow_symlinks\": false,\n \"index_hidden_files\": false\n },\n \"search\": {\n \"case_sensitive\": false,\n \"fuzzy_search\": true,\n \"max_results\": 1000\n }\n}\n```\n\n\n### \u9879\u76ee\u7ed3\u6784\n\n```\neverything-search/\n\u251c\u2500\u2500 everything_search/ # \u4e3b\u5305\n\u2502 \u251c\u2500\u2500 core/ # \u6838\u5fc3\u6a21\u5757\n\u2502 \u2502 \u251c\u2500\u2500 config_manager.py # \u914d\u7f6e\u7ba1\u7406\n\u2502 \u2502 \u251c\u2500\u2500 database.py # \u6570\u636e\u5e93\u64cd\u4f5c\n\u2502 \u2502 \u251c\u2500\u2500 file_indexer.py # \u6587\u4ef6\u7d22\u5f15\n\u2502 \u2502 \u251c\u2500\u2500 search_engine.py # \u641c\u7d22\u5f15\u64ce\n\u2502 \u2502 \u2514\u2500\u2500 file_watcher.py # \u6587\u4ef6\u76d1\u63a7\n\u2502 \u251c\u2500\u2500 cli/ # \u547d\u4ee4\u884c\u5de5\u5177\n\u2502 \u2502 \u251c\u2500\u2500 index_cli.py # \u7d22\u5f15\u7ba1\u7406CLI\n\u2502 \u2502 \u2514\u2500\u2500 search_cli.py # \u641c\u7d22CLI\n\u2502 \u251c\u2500\u2500 gui/ # GUI\u754c\u9762\n\u2502 \u2502 \u251c\u2500\u2500 main_window.py # \u4e3b\u7a97\u53e3\n\u2502 \u2502 \u251c\u2500\u2500 search_tab.py # \u641c\u7d22\u9875\u9762\n\u2502 \u2502 \u2514\u2500\u2500 settings_tab.py # \u8bbe\u7f6e\u9875\u9762\n\u2502 \u2514\u2500\u2500 gui_main.py # GUI\u542f\u52a8\u811a\u672c\n\u251c\u2500\u2500 pyproject.toml # \u9879\u76ee\u914d\u7f6e\n\u2514\u2500\u2500 README.md # \u9879\u76ee\u8bf4\u660e\n```\n\n## \ud83e\udd1d \u8d21\u732e\n\n\u6b22\u8fce\u63d0\u4ea4Issue\u548cPull Request\uff01\n\n1. Fork \u9879\u76ee\n2. \u521b\u5efa\u7279\u6027\u5206\u652f (`git checkout -b feature/AmazingFeature`)\n3. \u63d0\u4ea4\u66f4\u6539 (`git commit -m 'Add some AmazingFeature'`)\n4. \u63a8\u9001\u5230\u5206\u652f (`git push origin feature/AmazingFeature`)\n5. \u6253\u5f00Pull Request\n\n## \ud83d\udcc4 \u8bb8\u53ef\u8bc1\n\n\u672c\u9879\u76ee\u91c7\u7528 MIT \u8bb8\u53ef\u8bc1 - \u67e5\u770b [LICENSE](LICENSE) \u6587\u4ef6\u4e86\u89e3\u8be6\u60c5\n\n## \ud83d\ude4f \u81f4\u8c22\n\n- \u7075\u611f\u6765\u6e90\u4e8eWindows\u5e73\u53f0\u7684Everything\u641c\u7d22\u5de5\u5177\n- \u4f7f\u7528\u4e86\u4f18\u79c0\u7684\u5f00\u6e90\u5e93\uff1aPySide6\u3001watchdog\u7b49\n\n## \ud83d\udcde \u8054\u7cfb\n\n- \u4f5c\u8005\uff1aduolabmeng6\n- \u90ae\u7bb1\uff1a1715109585@qq.com\n- \u9879\u76ee\u94fe\u63a5\uff1ahttps://github.com/duolabmeng6/everything-for-mac\n\n---\n\n\u2b50 \u5982\u679c\u8fd9\u4e2a\u9879\u76ee\u5bf9\u60a8\u6709\u5e2e\u52a9\uff0c\u8bf7\u7ed9\u4e2aStar\u652f\u6301\u4e00\u4e0b\uff01\n# \u6253\u8d4f\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "\u9ad8\u6027\u80fd\u6587\u4ef6\u641c\u7d22\u5de5\u5177 - \u7c7b\u4f3c\u4e8eWindows Everything\u7684macOS\u89e3\u51b3\u65b9\u6848",
"version": "1.0.2",
"project_urls": {
"Bug Tracker": "https://github.com/duolabmeng6/everything-for-mac/issues",
"Documentation": "https://github.com/duolabmeng6/everything-for-mac#readme",
"Homepage": "https://github.com/duolabmeng6/everything-for-mac",
"Repository": "https://github.com/duolabmeng6/everything-for-mac"
},
"split_keywords": [
"desktop",
" everything",
" file-search",
" gui",
" indexing",
" macos",
" search-engine"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "07f7ad029f492c280a711437e1717d89ffab636ceb8af67a7455cc51b4249b47",
"md5": "bfd12c386986ddd2021669ebf6b9583f",
"sha256": "ee12dc765e26e8847b26feaba23afe07e5ef36ce5d0a60b4455d7edada266fc4"
},
"downloads": -1,
"filename": "everything_search-1.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "bfd12c386986ddd2021669ebf6b9583f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 53866,
"upload_time": "2025-07-20T12:14:01",
"upload_time_iso_8601": "2025-07-20T12:14:01.936415Z",
"url": "https://files.pythonhosted.org/packages/07/f7/ad029f492c280a711437e1717d89ffab636ceb8af67a7455cc51b4249b47/everything_search-1.0.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "743437a044635e4c68e7e1846062c2d5c8cca3ad9cd15e446223d3cff8844b51",
"md5": "276a58e747bedca0808d338478a32e04",
"sha256": "f882d2b11ba89b48ed432e03a348a5e151c09b69d3eea29b49b82492819d070e"
},
"downloads": -1,
"filename": "everything_search-1.0.2.tar.gz",
"has_sig": false,
"md5_digest": "276a58e747bedca0808d338478a32e04",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 577914,
"upload_time": "2025-07-20T12:14:04",
"upload_time_iso_8601": "2025-07-20T12:14:04.466291Z",
"url": "https://files.pythonhosted.org/packages/74/34/37a044635e4c68e7e1846062c2d5c8cca3ad9cd15e446223d3cff8844b51/everything_search-1.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-20 12:14:04",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "duolabmeng6",
"github_project": "everything-for-mac",
"github_not_found": true,
"lcname": "everything-search"
}