ダウンロードフォルダーが溢れ、デスクトップが一時ファイルで埋め尽くされ、プロジェクトディレクトリが乱雑になっている——これらの問題はほぼすべての開発者を悩ませています。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