organize は、ユーザのディスクトップ、ホームディレクトリを整理してくれるコマンドツールです。Linux 上で作業をしているとバックアップファイルやダウンロードしたPDF資料、画像など、もう必要としないファイルがホームディレクトリに溜まっていきます。organize は、python で書かれたコマンドで、設定にマッチしたファイルを移動、削除、ゴミ箱へ移動してくれるツールです。設定も対象ディレクトリ、拡張子、ファイル名の前方、後方一致、作成日など細かく設定できクリーナップ前にクリンナップされるファイルの一覧を表示させる事ができるため。誤ってファイルを削除してしまうことを避けることができます。
organize コマンドは、~/.local/bin/にコマンド群がインストールされるので、~/.local/bin/にPATHを設定しておきます。
~/.bashrc に以下の行を追加する。
export PATH=$PATH:~/.local/bin/
~/.bashrc を再読込します。
$ source ~/.bashrc
organizeは、インストールする前に、Pythonのパッケージを管理するためのツール python3-pip をインストールして pip3 コマンドで organize-tool をインストールします。
$ sudo apt install python3-pip
$ pip3 install -U organize-tool
インストール後、まずは以下のコマンドを実行して設定ファイルを作成します。
$ organize edit
設定ファイルは、~/.config/organize/config.yaml に保存されるので、コマンド実行後そちらを直に編集しても大丈夫です。
以下にサンプルの設定ファイを紹介しますが、サンプル以上に詳細な設定が行えるので詳しくは https://organize.readthedocs.io/en/latest/ を参照して下さい。
# organize configuration file
# https://organize.readthedocs.io
rules:
# ルールの名前
- name: "PDF資料"
# 対象ディレクトリ
locations: ~/ダウンロード/
# サブディレクトリも対象にするか
subfolders: true
# フィルターを設定
filters:
# 拡張子は pdf
- extension: pdf
# ファイル名でマッチ
- name:
contains:
- project
- プロジェクト
- 会議
- 購入
# 大文字、小文字区別なし
case_sensitive: false
# ヒットしたファイルは ~/ドキュメント/PDF/ に移動する。
actions:
- move: ~/ドキュメント/PDF/
- name: "バックアップ削除"
# 対象ディレクトリ
locations: ~/work/
# サブディレクトリも対象にするか
subfolders: true
# フィルターを設定
filters:
# 拡張子は back
- extension: back
# 最終更新日は30日前
- lastmodified:
days: 30
# ヒットしたファイルは削除
actions:
- delete
- name: "空ファイル削除"
# 対象ディレクトリを複数にする場合は、- path: と書く
locations:
- path: ~/ダウンロード/
- path: ~/work/
subfolders: true
# ファイルが空の場合
filters:
- empty
# ヒットしたファイルは削除
actions:
- delete
- name: "巨大ファイルをゴミ箱へ"
locations: "~/ダウンロード/"
# ファイルのサイズが 1.0GB 以上の場合
targets: files
filters:
- size: "> 1.0 GB"
# ゴミ箱へ移動
actions:
- trash
編集後、設定ファイルに問題がないか check します。
$ organize check
Checking: /home/taro/.config/organize/config.yaml
Config is valid.
まず実行前に sim オプションで実行結果のシミュレーションを行います。
$ organize sim
organize 2.1.2
Config: "/home/taro/.config/organize/config.yaml"
╭────────────────────────────────────────────────────────────────────────────────────╮
│ SIMULATION │
╰────────────────────────────────────────────────────────────────────────────────────╯
⚙ PDF資料 ────────────────────────────────────────────────────────────────────────────
/home/taro/ダウンロード
プロジェクト.pdf
- (move) Move to /home/taro/ドキュメント/PDF/プロジェクト.pdf
⚙ バックアップ削除 ───────────────────────────────────────────────────────────────────
/home/taro/work
sample.c.back
- (delete) Deleting "/home/taro/work/sample.c.back"
⚙ 空ファイル削除 ─────────────────────────────────────────────────────────────────────
/home/taro/ダウンロード
emptyfile.txt
- (delete) Deleting "/home/taro/ダウンロード/emptyfile.txt"
/home/taro/work
emptyfile.txt
- (delete) Deleting "/home/taro/work/emptyfile.txt"
⚙ 巨大ファイルをゴミ箱へ ─────────────────────────────────────────────────────────────
/home/taro/ダウンロード
ubuntu-ja-21.04-desktop-amd64.iso
- (trash) Trash "/home/taro/ダウンロード/ubuntu-ja-21.04-desktop-amd64.iso"
╭────────────────────────────────────────────────────────────────────────────────────╮
│ SIMULATION │
╰────────────────────────────────────────────────────────────────────────────────────╯
success 5 / fail 0
シミュレーション結果に問題なければ run オプションで実行します。
$ organize run