下载文件夹爆满、桌面堆满临时文件、项目目录杂乱无章——这些问题几乎困扰着每个开发者。macOS 上有 Hazel 这样的自动化工具,但它价格不菲且仅限 Mac 平台。今天介绍的 hazelnut 是一款开源的终端文件自动整理工具,用 Rust 编写,提供 TUI 界面,让你无需离开终端就能实现类似 Hazel 的自动整理功能。

项目概览

属性内容
GitHubricardodantas/hazelnut
Stars210
语言Rust
特点实时监控、规则驱动、TUI 界面、跨平台
最后更新2 天前

它解决了什么问题

文件整理是许多人拖延不做但又影响效率的事情。手动整理既耗时又容易出错,而现有的解决方案各有局限:

  1. Hazel —— macOS 独占,售价约 42 美元,对于简单的文件整理需求来说成本过高
  2. 手动脚本 —— 需要编写和维护 shell 脚本,门槛较高
  3. 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 界面
Organize1.2k跨平台免费Python 编写,配置较复杂
hazelnut210跨平台免费Rust 编写,TUI 界面,轻量

适用场景

hazelnut 特别适合以下情况:

  1. 服务器环境 —— 需要在无 GUI 的服务器上自动整理日志文件
  2. 下载文件夹管理 —— 自动分类下载的各类文件
  3. 项目目录整理 —— 自动归档旧文件,保持工作目录整洁
  4. 照片导入整理 —— 按日期自动整理相机导入的照片

注意事项

  • 项目尚处于早期阶段(2026年2月创建),API 和配置格式可能会变化
  • 建议在正式使用前先用 --dry-run 测试规则
  • 复杂规则可能需要手动编辑 YAML 配置文件

总结

hazelnut 填补了开源生态中「终端文件自动整理工具」的空白。它不像 Hazel 那样功能全面,但对于熟悉终端的开发者来说,它提供了一个轻量、可配置、跨平台的解决方案。如果你的下载文件夹已经不堪重负,或者需要在服务器上自动处理文件,hazelnut 值得一试。

属性内容
仓库https://github.com/ricardodantas/hazelnut
许可证GPL-3.0
语言Rust
维护者@ricardodantas