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 |