Linuxの tree コマンドは、ディレクトリ構造をツリー形式で視覚的に表示するコマンドです。通常の ls コマンドと異なり、ファイルやフォルダの階層関係を一目で俯瞰できるため、プロジェクト全体の把握や設計書の作成に欠かせません。実務では出力が長大になりがちなため、階層の深さ指定(-L)や不要なフォルダの除外(-I)を組み合わせるのが鉄則です。本記事では、日常業務ですぐに使えるワンライナーから主要オプション早見表、エラー対処法まで分かりやすく解説します。
【即解決】treeコマンド目的別1行実行コマンド集
「今すぐこの条件で出力したい」という方のために、実務で頻出するワンライナーをまとめました。目的に合わせてそのままコピー&ペーストして実行してください。
# 1. カレントディレクトリを2階層まで表示する
tree -L 2
# 2. ファイルを非表示にしてディレクトリ構造のみを表示する
tree -d
# 3. node_modules や .git などの不要なディレクトリを除外して表示する
tree -I 'node_modules|.git'
# 4. 隠しファイル(.envなど)も含めてすべて表示する
tree -a
# 5. 人間に読みやすいファイルサイズ(K, M, G)を付与して表示する
tree -h
# 6. 出力結果をテキストファイルに直接保存する
tree -o structure.txt
treeコマンドの主要オプション逆引き早見表
treeコマンドには多くのオプションが用意されていますが、実務で頻繁に使用するものは限られています。以下の早見表を活用して、目的に合ったオプションを組み合わせてください。
| オプション | 機能説明 | 実用例 |
|---|---|---|
-L <n> |
表示する階層の深さを指定した数値までに制限 | tree -L 2 |
-d |
ディレクトリのみを表示(通常ファイルを非表示) | tree -d |
-I '<pattern>' |
指定したパターンに一致するファイル・ディレクトリを除外 | tree -I 'node_modules|.git' |
-a |
ドット(.)から始まる隠しファイルも含めてすべて表示 | tree -a |
-f |
各ファイルのフルパス(または相対パスのプレフィックス付き)を表示 | tree -f |
-h |
ファイルサイズを読みやすい形式(K/M/Gバイト)で表示 | tree -h |
-p |
各ファイルのパーミッション(権限モード)を表示 | tree -p |
-u |
ファイルを所有するユーザー名を表示 | tree -u |
-o <file> |
画面に出力せず、結果を指定したファイルへ直接書き込み | tree -o tree.txt |
--charset=ASCII |
罫線にASCII文字のみを使用し、ターミナルの文字化けを防止 | tree --charset=ASCII |
実務で使える頻出ユースケース & コピペ実例
日常の運用管理や開発実務で役立つ、主要オプションの組み合わせテクニックを解説します。
プロジェクト構造の俯瞰:深さ指定(-L 2)とディレクトリ限定(-d)
新規参画したプロジェクトや大規模なリポジトリでは、いきなり tree を引数なしで実行すると数千行のファイルが出力され、ターミナルが埋め尽くされてしまいます。まずはディレクトリのみを2階層で絞り込んで全体像を把握するのが鉄則です。
# 2階層以内のディレクトリ構造のみを表示
tree -d -L 2
実行結果の例:
.
├── backend
│ ├── api
│ ├── config
│ └── database
├── frontend
│ ├── components
│ ├── pages
│ └── public
└── infra
├── docker
└── terraform
9 directories
このように -d -L 2 を指定することで、主要なモジュール構成をコンパクトに俯瞰できます。
node_modulesや.gitを除外してスッキリ表示(-I "node_modules|vendor|.git")
Node.jsやPHP、Pythonなどのモダン開発環境では、ライブラリ配下に膨大なファイルが自動生成されます。これらが表示に含まれると必要なソースコードが埋もれてしまうため、-I オプションで除外パターンを指定します。パイプ(|)で区切ることで複数の一括除外が可能です。
# node_modules、vendor、.git を除外して2階層まで表示
tree -L 2 -I 'node_modules|vendor|.git'
実行結果の例:
.
├── README.md
├── package.json
├── src
│ ├── App.jsx
│ ├── index.js
│ └── styles.css
└── tests
├── unit
└── integration
3 directories, 5 files
※ パターンを引用符(シングルクォートまたはダブルクォート)で囲むことで、シェルによるパイプ解釈やワイルドカード展開を防ぐことができます。
ファイルサイズと権限を同時に確認(-h -p -u)
サーバー調査やトラブルシューティング時には、各ファイルのパーミッションや容量を一括で確認したい場面があります。-h(サイズ可読化)、-p(権限)、-u(所有者)を組み合わせることで、ls -la の詳細情報をツリー構造のまま把握できます。
# 権限、所有者、容量をツリー形式で一覧表示
tree -h -p -u -L 2 /var/log
実行結果の例:
/var/log
├── [-rw-r--r-- root ] 120K boot.log
├── [drwxr-xr-x syslog ] 4.0K nginx
│ ├── [-rw-r----- www-data] 2.3M access.log
│ └── [-rw-r----- www-data] 450K error.log
└── [-rw-rw-r-- root ] 45K wtmp
1 directory, 4 files
パーミッションの不一致によるアクセス権エラーの調査などに非常に重宝します。
設計書やREADMEに貼るためのテキスト保存(-o 出力とリダイレクト >)
GitHubのリポジトリドキュメント(README.md)や設計書にフォルダ構成図を記載したい場合、出力をテキストファイルに保存して共有します。
# -o オプションで直接ファイル保存
tree -L 2 -I 'node_modules|.git' -o structure.txt
# または標準リダイレクト(>)で保存
tree -L 2 -I 'node_modules|.git' > structure.txt
Markdownドキュメントに貼り付ける際は、コードブロックで囲むことで、インデントと罫線が崩れずに美しく表示されます。
よくあるエラー・落とし穴と対処法
treeコマンドを使用する際につまずきやすいポイントと解決手順をまとめました。
tree: command not found のインストール手順
Linux環境によっては、最小構成インストールなどで tree が初期導入されていないことがあります。tree: command not found(コマンドが見つかりません)と表示された場合は、各ディストリビューションのパッケージマネージャーでインストールを行ってください。
# Ubuntu / Debian 系
sudo apt update && sudo apt install -y tree
# RHEL / CentOS / AlmaLinux / Rocky Linux 系
sudo dnf install -y tree
# macOS(Homebrew)
brew install tree
いずれも数十秒程度で簡単に導入が完了します。
罫線が文字化け・崩れる場合の対処法
SSH接続先のリモートサーバーや古い端末エミュレータでは、ツリーの分岐線(├── や └──)が文字化けしたり、記号に化けてしまうことがあります。
主な原因はターミナルの文字コード(ロケール)設定です。まずは現在の環境変数を確認してください。
# ロケール設定の確認
echo $LANG
通常、ja_JP.UTF-8 や en_US.UTF-8 など UTF-8 が設定されていれば正常に表示されます。ロケールを変更できない環境や、テキストファイルとして安全に配布したい場合は、--charset=ASCII を指定してASCII文字だけで描画するのが確実です。
# ASCII文字(| や -)で描画して文字化けを防止
tree --charset=ASCII -L 2
実行結果の例:
.
|-- README.md
|-- src
| |-- index.js
| `-- utils.js
`-- package.json
文字コードに依存しないため、メールやプレーンテキストでのやり取りでも表示崩れが起きません。
Windows環境のtreeコマンドとの違いと注意点
Windowsのコマンドプロンプトにも標準で tree コマンドが存在しますが、Linuxの tree とは全くの別物です。
| 比較項目 | Linux / macOS の tree | Windows標準の tree |
|---|---|---|
| 提供形態 | パッケージマネージャーから導入 | Windows OSに標準搭載 |
| 深さ指定 | -L <n> で自由に指定可能 |
指定不可(最下層まで出力される) |
| 除外指定 | -I '<pattern>' で除外可能 |
除外機能なし |
| ファイル表示 | デフォルトで表示(-d で非表示) |
デフォルトはディレクトリのみ(/F でファイル表示) |
| ASCII出力 | --charset=ASCII |
/A オプション |
Windows標準のtreeは -L や -I が使えないため、大規模なプロジェクトで実行すると停止できなくなるリスクがあります。Windows環境でLinuxと同様の高度なツリー表示を行いたい場合は、Git Bash または WSL2(Windows Subsystem for Linux) を利用してください。
まとめ:treeコマンドを使いこなして作業効率を最大化しよう
treeコマンドを実務でスマートに使いこなすための要点は以下の3点です。
- 深さ指定(
-L)と除外(-I)をセットで使う:大規模ディレクトリでは出力行数を絞り込み、node_modulesなどを必ず除外して視認性を確保する。 - アンサーファーストで必要な情報だけを抽出する:ディレクトリのみ(
-d)やサイズ・権限表示(-h -p)を組み合わせ、目的に最短で到達する操作を意識する。 - 文字化け対策とWindows環境の差異を意識する:崩れが懸念される場面では
--charset=ASCIIを用い、WindowsではGit BashやWSL2を活用する。
適切なオプションを選んで、ディレクトリ探索やドキュメント作成の時間を大幅に短縮しましょう。
関連記事
日々のLinuxファイル操作・容量調査をさらに効率化するために、以下の解説記事もあわせてご活用ください。
- lsコマンドの主要オプション(-laなど)逆引き早見表:ファイル一覧表示の基本と日常で多用するオプションを網羅。
- 【Linux】findコマンドの使い方完全ガイド:特定ファイルや階層を条件指定で検索・一括処理する強力な手法。
- duコマンドの使い方:ディレクトリやファイルのディスク消費量を素早く特定する容量調査ガイド。

コメント