テキストファイルに記述されたツリー構造から、実際のディレクトリとファイルを一括生成します。
プロジェクトの初期セットアップや、定型的なディレクトリ構造の複製を自動化します。
- 正確な階層解析: 正規表現を用いてインデントを正確に計算するため、全角スペースや特殊な空白文字が含まれていても、見た目通りの階層構造を正確に再現します。
- ルートディレクトリの無視: 構造ファイルの 1 行目がルートディレクトリの場合、そのディレクトリ自体は作成せず、中身だけを現在の場所に展開します。
- 柔軟な書式対応:
├──や└──といった罫線の種類や有無に影響されません。 - コメント対応:
#から始まる行や、行の途中からのコメントを無視します。 - コマンドラインツール: macOS や Linux 環境で、どこからでも呼び出せるコマンドとして設定可能です。
- Python 3
スクリプトをシステムのどこからでも mktree コマンドとして実行できるように設定します。
-
実行権限の付与 ターミナルで以下のコマンドを実行します。
chmod +x mktree.py
-
PATH への配置 スクリプトを PATH が通っているディレクトリにコピーします。
# `sudo` を使うためパスワードが必要です sudo cp mktree.py /usr/local/bin/mktree
これで、新しいターミナルウィンドウを開けば、どこからでも mktree コマンドが使用できます。
-
作成したいディレクトリ構造を記述したテキストファイル(例:
my-project.txt)を用意します。 -
ターミナルで以下のコマンドを実行します。
mktree my-project.txt
- 1 行に 1 つのファイルまたはディレクトリを記述します。
- ディレクトリは、名前の末尾に必ずスラッシュ
/を付けてください。 - 階層の深さは、行頭のインデント(空白や罫線)で表現します。
- ルートディレクトリは無視されます。
書式例 (my-project.txt):
# ルートディレクトリ(この行は無視され、中身だけが作成されます)
my-awesome-app/
├── README.md
├── package.json
│
└── src/
├── components/
│ └── Button.jsx
└── index.js
上記の例を実行すると、my-awesome-app/ は作成されず、README.md や src/ などが現在のディレクトリ直下に作成されます。
スクリプト冒頭にある INDENT_WIDTH の値を変更することで、インデント 1 階層あたりの文字数を調整できます(デフォルトは 4)。
# 1階層あたりのインデント文字数
INDENT_WIDTH = 4