hazelnut:210⭐的终端文件自动整理工具,Hazel 的开源替代品
下载文件夹爆满、桌面堆满临时文件、项目目录杂乱无章——这些问题几乎困扰着每个开发者。macOS 上有 Hazel 这样的自动化工具,但它价格不菲且仅限 Mac 平台。今天介绍的 hazelnut 是一款开源的终端文件自动整理工具,用 Rust 编写,提供 TUI 界面,让你无需离开终端就能实现类似 Hazel 的自动整理功能。
项目概览
| 属性 | 内容 |
|---|---|
| GitHub | ricardodantas/hazelnut |
| Stars | 210 |
| 语言 | Rust |
| 特点 | 实时监控、规则驱动、TUI 界面、跨平台 |
| 最后更新 | 2 天前 |
它解决了什么问题
文件整理是许多人拖延不做但又影响效率的事情。手动整理既耗时又容易出错,而现有的解决方案各有局限:
- Hazel —— macOS 独占,售价约 42 美元,对于简单的文件整理需求来说成本过高
- 手动脚本 —— 需要编写和维护 shell 脚本,门槛较高
- GUI 文件管理器 —— 操作繁琐,无法自动化
hazelnut 的定位是:轻量、跨平台、终端优先,让文件自动整理变得简单且可配置。
核心功能
实时监控文件夹
hazelnut 可以持续监控指定文件夹,当有新文件放入时自动触发规则执行:
# 启动监控
hazelnut watch ~/Downloads
规则驱动的整理逻辑
通过 YAML 配置文件定义整理规则,支持多种匹配条件:
- 按文件类型:将
.jpg、.png移动到 Pictures 文件夹 - 按文件名模式:将包含 “invoice” 的文件移动到 Documents/Invoices
- 按文件大小:将超过 100MB 的文件移动到 Archives
- 按创建时间:将 30 天前的文件移动到 Old 文件夹
示例配置:
rules:
- name: "Images"
pattern: "*.{jpg,jpeg,png,gif}"
action: move
target: "~/Pictures/"
- name: "PDFs"
pattern: "*.pdf"
action: move
target: "~/Documents/PDFs/"
- name: "Old Downloads"
condition: "age > 30d"
action: move
target: "~/Downloads/Archive/"
TUI 界面
基于 ratatui 构建的终端用户界面,提供直观的操作体验:
- 实时查看监控状态
- 可视化规则配置
- 查看文件操作日志
- 手动触发整理任务
跨平台支持
得益于 Rust 的跨平台特性,hazelnut 支持:
- Linux
- macOS
- Windows (WSL 或原生)
快速开始
安装
# 通过 cargo 安装
cargo install hazelnut
# 或通过预编译二进制文件
wget https://github.com/ricardodantas/hazelnut/releases/latest/download/hazelnut-linux-amd64
chmod +x hazelnut-linux-amd64
sudo mv hazelnut-linux-amd64 /usr/local/bin/hazelnut
基础用法
# 初始化配置
hazelnut init
# 编辑配置文件
vim ~/.config/hazelnut/config.yaml
# 启动监控
hazelnut watch ~/Downloads
# 手动执行一次整理(不监控)
hazelnut run ~/Downloads --dry-run
# TUI 界面
hazelnut tui
与同类工具对比
| 工具 | Stars | 平台 | 价格 | 特点 |
|---|---|---|---|---|
| Hazel | 商业软件 | macOS | $42 | 功能丰富,GUI 界面 |
| Organize | 1.2k | 跨平台 | 免费 | Python 编写,配置较复杂 |
| hazelnut | 210 | 跨平台 | 免费 | Rust 编写,TUI 界面,轻量 |
适用场景
hazelnut 特别适合以下情况:
- 服务器环境 —— 需要在无 GUI 的服务器上自动整理日志文件
- 下载文件夹管理 —— 自动分类下载的各类文件
- 项目目录整理 —— 自动归档旧文件,保持工作目录整洁
- 照片导入整理 —— 按日期自动整理相机导入的照片
注意事项
- 项目尚处于早期阶段(2026年2月创建),API 和配置格式可能会变化
- 建议在正式使用前先用
--dry-run测试规则 - 复杂规则可能需要手动编辑 YAML 配置文件
总结
hazelnut 填补了开源生态中「终端文件自动整理工具」的空白。它不像 Hazel 那样功能全面,但对于熟悉终端的开发者来说,它提供了一个轻量、可配置、跨平台的解决方案。如果你的下载文件夹已经不堪重负,或者需要在服务器上自动处理文件,hazelnut 值得一试。
| 属性 | 内容 |
|---|---|
| 仓库 | https://github.com/ricardodantas/hazelnut |
| 许可证 | GPL-3.0 |
| 语言 | Rust |
| 维护者 | @ricardodantas |