【2026年8月最新】Linuxコマンド tree の使い方完全ガイド|主要オプション一覧と実践例
「フォルダの中身をパッと一覧で見たい」「今どんな構成でファイルが入っているか、人に説明したい」——ターミナルでlsコマンドを何度も打って階層を確認するのが面倒だと感じたことはないでしょうか。
この悩みを一発で解決してくれるのがtreeコマンドです。ディレクトリの階層構造を、名前のとおり「木(tree)」の形で視覚的に表示してくれるコマンドで、Linux・macOS・Windows(WSL)のいずれでも使えます。この記事では、treeコマンドの基本的な使い方から主要オプション、実践的な活用例、そしてAIエージェントと組み合わせる活用法までを解説します。
この記事を最後まで読むと、次の6つが明確になります。
01 WHAT IS TREE treeコマンドとは ディレクトリ構造を「木」の形で可視化するコマンド
treeコマンドは、指定したディレクトリ以下のファイル・フォルダ構成を、階層が視覚的に分かる形式で一覧表示するコマンドラインツールです。
📚 用語解説
ディレクトリ:ファイルを整理して格納するための入れ物のこと。WindowsやmacOSでいう「フォルダ」と同じ意味で、Linuxやコマンドラインの文脈では「ディレクトリ」と呼ばれるのが一般的です。ディレクトリの中にさらに別のディレクトリを作ることで、階層構造を作れます。
通常、ディレクトリの中身を確認するにはlsコマンドを使いますが、lsは基本的に1つの階層しか一覧表示しません。サブディレクトリの中身まで一度に見たい場合、何度もcdとlsを繰り返す必要があり非効率です。treeコマンドを使えば、この作業が1コマンドで完結します。
1-1. lsコマンドとtreeコマンドの違い
| 項目 | lsコマンド | treeコマンド |
|---|---|---|
| 表示範囲 | 指定したディレクトリの直下のみ | 指定したディレクトリ以下、全階層 |
| 見た目 | 横並び・縦並びのリスト | 階層が線でつながった「木」構造 |
| 標準搭載 | ほぼすべてのUnix系OSに標準搭載 | 多くの場合、別途インストールが必要 |
| 向いている用途 | 今いる場所のファイルだけ素早く確認 | プロジェクト全体の構成を俯瞰したいとき |
プロジェクトのREADMEにディレクトリ構成を載せたいときや、新しいメンバーにフォルダ構成を説明するときなど、「全体像を一目で伝えたい」場面でtreeコマンドは特に力を発揮します。
02 INSTALLATION treeコマンドのインストール方法 OS別のインストール手順
treeコマンドは多くのLinuxディストリビューションで標準搭載されていないため、事前にインストールが必要です。OSごとの手順は以下のとおりです。
| OS / 環境 | インストールコマンド |
|---|---|
| Ubuntu / Debian系Linux | sudo apt install tree |
| CentOS / RHEL系Linux | sudo yum install tree |
| macOS (Homebrew) | brew install tree |
| Windows (WSL) | WSL内でLinuxと同じくapt/yumコマンドを使用 |
| Windows (コマンドプロンプト) | tree コマンドが標準搭載(オプション体系はLinux版と異なる) |
📚 用語解説
WSL(Windows Subsystem for Linux):Windows上でLinux環境をそのまま動かせるMicrosoft公式の仕組み。仮想マシンを別途構築しなくても、WindowsのターミナルからほぼそのままLinuxのコマンドが使えるようになります。開発者が Windows PC で Linux ツールを使いたい場合の標準的な選択肢です。
Windowsのコマンドプロンプトにもtreeコマンドは標準搭載されていますが、これはLinux版のtreeコマンドとは別物で、使えるオプションの種類や表示形式が異なります。この記事で解説するのは、Linux/macOS/WSLで使われる高機能な方のtreeコマンドです。
インストール後、以下のコマンドでバージョンが表示されれば準備完了です。
tree --version
03 BASIC USAGE 基本的な使い方 まずはオプションなしで実行してみる
最もシンプルな使い方は、確認したいディレクトリに移動して、そのままtreeと入力するだけです。
cd my-project
tree
実行すると、以下のような形式で現在のディレクトリ以下がすべて表示されます。
.
├── README.md
├── src
│ ├── main.py
│ └── utils
│ └── helper.py
└── tests
└── test_main.py
3 directories, 4 files
現在の場所から見て、どのファイルがどの階層にあるのかが一目で分かります。最後の行には、含まれるディレクトリ数とファイル数の合計も自動的に表示されます。
3-1. 特定のディレクトリを指定して実行する
今いる場所ではなく、別のディレクトリの構成を見たい場合はパスを引数に指定します。
tree /home/user/my-project
04 OPTIONS 主要オプション一覧 よく使う14個のオプションを整理する
treeコマンドには多数のオプションがありますが、実務でよく使うものに絞って整理します。
| オプション | 意味 |
|---|---|
| -a | 隠しファイル(.で始まるファイル)も表示する |
| -d | ディレクトリのみ表示し、ファイルは表示しない |
| -L n | 表示する階層の深さをn段までに制限する |
| -f | 実行したディレクトリからのフルパスを表示する |
| -h | ファイルサイズを人が読みやすい単位(KB/MB等)で表示する |
| -s | ファイルサイズをバイト単位で表示する |
| -I パターン | 指定したパターンに一致するファイル・ディレクトリを除外する |
| -P パターン | 指定したパターンに一致するものだけを表示する |
| -C | 出力に色を付ける(ファイル種別ごとに色分け) |
| --dirsfirst | ディレクトリをファイルより先に表示する |
| -o ファイル名 | 結果を画面ではなく指定ファイルに出力する |
| -J | 結果をJSON形式で出力する |
| -p | ファイルのパーミッション(アクセス権限)を表示する |
| -v | ファイル名をバージョン番号順(v1, v2...)に並べ替える |
📚 用語解説
パーミッション(アクセス権限):Linux/Unix系OSで、ファイルやディレクトリに対して「誰が読み書き・実行できるか」を定めた権限情報。所有者・グループ・その他ユーザーの3種類に対して、それぞれ読み取り・書き込み・実行の権限が設定されます。treeコマンドの-pオプションで、この情報も一覧に表示できます。
オプションは14個ありますが、実務で頻繁に使うのは-a・-d・-L・-Iの4つ程度です。まずはこの4つを覚えて使いこなせるようになれば、日常業務で困ることはほとんどありません。残りは必要になったときにこの表を見返せば十分です。
4-1. -f(フルパス表示)の使いどころ
オプションなしのtreeは、ファイル名だけを罫線でつないで表示します。しかし、出力結果をスクリプトの入力として使いたい場合や、他のツールにファイルパスをそのまま渡したい場合は、-fオプションでフルパスを表示させると便利です。
tree -f
# ./src/main.py のようにパスが付いた形式で出力される
4-2. -p(パーミッション表示)の使いどころ
サーバーの権限設定を確認・共有したいとき、-pオプションを使うと、各ファイル・ディレクトリのアクセス権限が一覧の先頭に表示されます。
tree -p
# [drwxr-xr-x] src のように権限情報が付与される
サーバーの設定ファイルが「なぜか実行できない」といったトラブルの調査時、まずtree -pで権限を俯瞰してから該当ファイルを特定する、という使い方が実務では有効です。
4-3. -J(JSON形式出力)の使いどころ
-Jオプションを使うと、結果をJSON形式で出力できます。人間が読むための表示ではなく、別のプログラムやAIに構造データとして読み込ませたい場合に活用できます。
tree -J -L 2 > structure.json
📚 用語解説
JSON(JavaScript Object Notation):プログラム同士がデータをやり取りする際によく使われる、構造化されたテキスト形式。人間にも読めますが、プログラムが自動的に解析(パース)しやすい形式になっているのが特徴です。treeの出力をJSON化しておくと、別のスクリプトで自動処理する際に扱いやすくなります。
05 PRACTICAL EXAMPLES 実践的な活用例 オプションを組み合わせて実務で使う
5-1. ディレクトリのみを表示する
ファイルの数が多いプロジェクトでは、まずフォルダ構成だけを把握したい場面があります。
tree -d
5-2. 表示する階層の深さを制限する
大きなプロジェクトで全階層を表示すると出力が長大になりすぎるため、-Lオプションで表示する深さを制限すると見やすくなります。
tree -L 2
この例では、現在のディレクトリから2階層分だけが表示され、それより深い階層は省略されます。
5-3. 特定のフォルダを除外する
node_modulesや.gitなど、確認する必要のない巨大なフォルダを除外したいときは-Iオプションを使います。
tree -I "node_modules|.git|__pycache__"
複数のパターンを除外したい場合、|(パイプ)で区切って1つの引数として渡す必要があります。-I node_modules -I .gitのように別々の引数として渡すと、後から指定したものしか適用されません。
5-4. ファイルサイズを人が読みやすい形式で表示する
tree -h
各ファイルの横に「1.2K」「340M」のようなサイズが表示されるため、容量の大きいファイルを探すときに便利です。
5-5. 結果をファイルに出力してドキュメント化する
プロジェクトのREADMEやドキュメントに構成図を載せたい場合、結果をテキストファイルに保存できます。
tree -L 2 > structure.txt
これらのオプションをよく使う目的別に整理すると、以下のような使い分けが見えてきます。
把握したい
-d オプション
見やすくしたい
-L n / -I
オプション
確認したい
-h オプション
したい
出力を
ファイル保存
5-6. よく使うオプションをエイリアス化して時短する
毎回長いオプションを打つのが面倒な場合、シェルの設定ファイル(.bashrcや.zshrc)にエイリアス(コマンドの別名)を登録しておくと、短いコマンドで済むようになります。
📚 用語解説
エイリアス(alias):よく使う長いコマンドに、短い別名を付けて登録しておく仕組み。一度設定しておけば、その短い名前を打つだけで元の長いコマンドが実行されます。ターミナル作業を効率化する定番のテクニックの一つです。
# .bashrc や .zshrc に追記
alias tr2='tree -L 2 -I "node_modules|.git" -h'
設定後にターミナルを再起動(またはsource ~/.bashrcを実行)すれば、以降はtr2と打つだけで、よく使うオプション付きのtreeコマンドを実行できるようになります。
06 COMBINATIONS 他コマンドとの組み合わせ パイプでさらに便利に使いこなす
treeコマンドは、他のコマンドと組み合わせることでさらに活用の幅が広がります。
📚 用語解説
パイプ(|):あるコマンドの実行結果を、別のコマンドの入力として直接渡す仕組み。「A | B」と書くと、Aの出力結果がそのままBの処理対象になります。複数のコマンドを連携させて、1行で複雑な処理を実現できるのがコマンドラインの強みです。
6-1. grepと組み合わせて特定のファイルだけ探す
tree | grep ".py"
この例では、tree の出力結果から「.py」を含む行だけを絞り込んで表示します。特定の拡張子のファイルがどこに散らばっているかを素早く確認できます。
6-2. wcと組み合わせてファイル数を数える
find . -type f | wc -l
正確なファイル数だけをカウントしたい場合は、上記のようにfindコマンドと組み合わせるのが確実です。tree -f -i(-fiのように連結して書いても同じ意味)の出力をwc -lで数える方法もありますが、その場合はディレクトリの行やルート行(.)、末尾の集計行(「X directories, Y files」)も1行としてカウントされてしまうため、純粋なファイル数より多い値になる点に注意してください。
6-3. クリップボードにコピーして共有する
macOSであればpbcopy、WSLであればclip.exeと組み合わせることで、treeの結果を直接クリップボードにコピーし、チャットツールやドキュメントに貼り付けられます。
# macOSの場合
tree -L 2 | pbcopy
# WSLの場合
tree -L 2 | clip.exe
07 TROUBLESHOOTING よくあるエラーとつまずきポイント 導入・実行時に迷いやすい点を先回りで解説
7-1. 「command not found: tree」と表示される
最も多いのが、treeコマンド自体がインストールされていないケースです。第2章で紹介したインストール手順(apt install tree等)を実行すれば解決します。
7-2. 文字化けして罫線が崩れる
ターミナルの文字コード設定によっては、tree特有の罫線記号(├── や └── など)が正しく表示されず、文字化けして見えることがあります。この場合、--charset=asciiオプションを使うと、罫線が|(縦棒)や`(バッククォート)、-(ハイフン)といった通常のASCII記号の組み合わせに置き換わり、文字化けを回避できます。
tree --charset=ascii
7-3. 出力が長すぎて画面から流れてしまう
大きなプロジェクトでオプションなしのtreeを実行すると、出力が数百行に及ぶこともあります。-Lオプションで深さを制限するか、lessコマンドと組み合わせてページ送り表示にすることで見やすくなります。
tree | less
node_modulesディレクトリなどが含まれるプロジェクトでオプションなしのtreeを実行すると、数万行の出力になり、ターミナルが固まったように見えることがあります。あらかじめ-I "node_modules"で除外するか、-Lで階層を制限してから実行する習慣をつけておくと安全です。
オプションの細かい挙動を忘れてしまった場合、tree --helpを実行すれば、インストールされているバージョンで使える全オプションの一覧が確認できます。この記事の内容と実際の挙動が食い違う場合は、バージョン差異の可能性があるため、まずこのコマンドで手元の環境を確認する習慣をつけておくと安心です。
08 AI + TREE 【独自】ディレクトリ構造をAIに正確に伝える活用法 treeの出力は、AIへの「地図」として使える
treeコマンドは、人間が構造を把握するためだけでなく、AIエージェントに正確な情報を渡すためのツールとしても非常に有効です。
弊社(株式会社GENAI)では、AIエージェント「Claude Code」を使って開発・資料整理・ファイル管理などの業務を効率化していますが、AIに何か作業を依頼するとき、「今どんなファイル構成になっているか」を最初に伝えるかどうかで、AIの回答精度が大きく変わるという実感があります。
📚 用語解説
コンテキスト(AIにおける文脈情報):AIが回答を生成する際に参照する、事前に与えられた情報のこと。ファイル構成・過去のやり取り・関連資料などが含まれます。同じ質問でも、コンテキストとして渡す情報の質と量によって、AIの回答の的確さが大きく変わります。treeコマンドの出力は、プロジェクトの構造をAIに伝えるコンテキストとして特に有効です。
8-1. なぜtreeの出力がAIとの対話で有効なのか
文章で「srcフォルダの中にmainファイルがあって、その下にutilsフォルダが…」と説明するよりも、treeコマンドの出力をそのまま貼り付けた方が、階層関係を一切誤解なくAIに伝えられます。人間にとっても、AIにとっても、視覚的な構造情報は文章による説明より格段に伝達精度が高いのです。
| 伝え方 | AIの理解のしやすさ | 備考 |
|---|---|---|
| 文章で口頭説明する | △ 階層の誤解が起きやすい | 「その下の」「同じ階層に」等の表現が曖昧になりがち |
| ファイル名を箇条書きで渡す | ○ 一覧性はあるが階層が不明瞭 | フルパスを書けば分かるが冗長になりやすい |
| treeコマンドの出力を渡す | ◎ 階層構造を誤解なく伝えられる | 最小限の情報で構造全体を正確に共有できる |
8-2. 実務での活用パターン
弊社での実務活用パターンをいくつか紹介します。
この一連の流れを図解すると、以下のようになります。
構造を
出力する
コンテキストとして
共有
整理・要約・
提案を依頼
人間が最終
チェック
弊社の実運用データで見ると、Claude Max 20xプラン(月額約30,000円)を契約し、開発や資料整理の場面でこうした「構造を先に見せてから依頼する」進め方を徹底しています。曖昧な説明でAIとやり取りを何往復もするより、最初にtreeの出力を渡す方が、結果的に早く正確な成果物にたどり着けるという肌感があります。
「tree -L 2」と打つだけなら、コマンドラインに不慣れな方でもすぐに実践できます。AIに何か整理や提案を依頼するときは、まず現状の構造を見せる——このひと手間が、AIとのやり取りの質を大きく底上げしてくれます。
8-3. AIエージェント自身がtreeコマンドを実行するケース
Claude Codeのような自律型のAIエージェントは、人間がtreeの出力を貼り付けなくても、必要に応じて自らtreeコマンド(や同等の一覧取得処理)を実行して構造を把握することができます。「このプロジェクトを整理して」と依頼するだけで、AIが自分でディレクトリを調べ、全体像を掴んだ上で作業を進めてくれるイメージです。
とはいえ、大規模なプロジェクトや、AIに読み込ませたくない機密ディレクトリが含まれる場合は、あらかじめ人間が範囲を絞ったtree出力を渡す方が、意図しない情報までAIに見せてしまうリスクを避けられます。「AIに任せきりにする」か「必要な情報だけを渡す」かは、扱う情報の機密度に応じて使い分けるのが安全です。
09 CONCLUSION まとめ treeコマンドを使いこなすための要点整理
この記事では、Linuxのtreeコマンドについて、基本的な使い方からインストール方法、主要オプション、実践的な活用例、他コマンドとの組み合わせ、よくあるエラー対処、そしてAIエージェントとの組み合わせ方までを解説しました。最後にポイントを振り返ります。
treeコマンドは覚えることが少ない割に、日々の作業効率を底上げしてくれる便利なツールです。特にAIと一緒に仕事を進める機会が増えている今、「構造を正確に伝える」ための手段として、あらためて活用の価値が高まっていると言えるでしょう。
AIとの協働を、もっと精度高く。AI鬼管理が設計から伴走します
treeコマンドのような小さな工夫の積み重ねが、AI活用の成果を大きく左右します。
弊社の実運用ノウハウをもとに、貴社の業務に合わせたAI活用の設計を個別にご相談いただけます。
NEXT STEP
この記事の内容を、あなたのビジネスで
実践してみませんか?
よくある質問
Q. treeコマンドはWindowsでも使えますか?
A. Windowsのコマンドプロンプトにも同名の「tree」コマンドが標準搭載されていますが、Linux版とはオプション体系が異なる別物です。この記事で解説した高機能なtreeコマンドを使いたい場合は、WSL(Windows Subsystem for Linux)を導入し、その中でapt等を使ってインストールするのがおすすめです。
Q. treeコマンドで隠しファイルも表示するにはどうすればいいですか?
A. -aオプションを付けて実行してください(例: tree -a)。オプションなしのtreeコマンドは、「.」で始まる隠しファイル・隠しディレクトリ(.git や .env など)を表示しない仕様になっています。
Q. node_modulesのような巨大なフォルダを除外して表示したいです
A. -Iオプションで除外パターンを指定してください(例: tree -I "node_modules|.git")。複数のパターンを除外したい場合は、パイプ「|」で区切って1つの引数として渡す必要がある点に注意してください。
Q. treeの出力結果をファイルに保存するにはどうすればいいですか?
A. リダイレクト(>)を使って、tree > structure.txt のように実行すれば、結果がテキストファイルとして保存されます。README用のディレクトリ構成図を作りたいときなどに便利です。
Q. treeコマンドの出力の罫線が文字化けしてしまいます
A. ターミナルの文字コード設定が原因であることが多いです。--charset=asciiオプションを付けて実行すると、罫線記号が通常のアルファベット記号(|や`など)に置き換わり、文字化けを回避できます。
Q. AIにプロジェクトの説明をする際、treeコマンドの出力をそのまま貼り付けても大丈夫ですか?
A. 問題ありません。むしろ推奨される方法です。文章で階層関係を説明するより、treeコマンドの出力をそのまま渡す方が、AIが構造を誤解なく正確に理解できます。ただし、機密性の高いファイル名やパスが含まれる場合は、渡す範囲を事前に確認することをおすすめします。
Claude Codeで業務自動化を90日で叩き込む
経営者向けの伴走型パーソナルトレーニング
AI鬼管理/AIBPO by AI鬼管理へのお問い合わせ
この記事を読んで気になった方へ。
専門スタッフが、御社に最適な
業務自動化・業務代行プランを無料でご提案します。




