Linuxのtreeコマンドは、ディレクトリやファイルの構造を階層形式(ツリー形式)で表示するコマンドです。
通常のlsコマンドはファイルを一覧で表示するだけですが、treeはフォルダの親子関係を含めた構造を視覚的に確認できます。
プロジェクトの構成確認、README・設計書への記載、サーバー内のファイル配置の把握など、ディレクトリ構造を素早く理解したい場面で広く使われています。
treeコマンドを使う場面
Linuxでtreeコマンドが役立つのは、次のような場面です。
- プロジェクトのフォルダ構成をチームに共有する
- READMEや設計書にディレクトリ構成図を記載する
- サーバー内のファイル配置を調査・把握する
- 受け取ったファイル・パッケージの中身を確認する
- 大量のディレクトリがある環境で構造を俯瞰する
インストール方法
Linuxではtreeコマンドが標準でインストールされていない場合があります。tree: command not foundと表示されたときは、以下の手順でインストールしてください。
Ubuntu / Debian系
sudo apt install tree
CentOS / RHEL系
# CentOS 7 / RHEL 7
sudo yum install tree
# CentOS 8以降 / RHEL 8以降
sudo dnf install tree
macOS(Homebrew)
brew install tree
基本の使い方
カレントディレクトリを表示
引数を指定しない場合は、現在のディレクトリの構造を表示します。
tree
.
├── README.md
├── src
│ ├── index.js
│ └── utils.js
└── package.json
1 directory, 4 files
特定のディレクトリを指定して表示
tree /var/www/html
対象のパスを引数として指定すると、そのディレクトリ以下の構造を表示します。
構文(Syntax)
tree [オプション] [ディレクトリ]
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
| (なし) | カレントディレクトリをツリー形式で表示 | tree |
-L n | 表示する階層の深さを制限 | tree -L 2 |
-d | ディレクトリのみ表示(ファイルを除外) | tree -d |
-a | 隠しファイルを含めて表示 | tree -a |
-I パターン | 指定パターンに一致するファイル・ディレクトリを除外 | tree -I "node_modules" |
-f | フルパスで表示 | tree -f |
-s | ファイルサイズを表示 | tree -s |
-h | サイズを人間に読みやすい形式で表示(KB/MB) | tree -h |
-p | パーミッションを表示 | tree -p |
-u | 所有者を表示 | tree -u |
-t | 更新時刻の順でソート | tree -t |
--noreport | 末尾のファイル数・ディレクトリ数のサマリを非表示 | tree --noreport |
階層を指定して表示する(-L)
ディレクトリ数が多い環境では、treeをそのまま実行すると出力が大量になります。-Lオプションで表示階層を制限することで、必要な範囲だけ確認できます。
2階層まで表示
tree -L 2
.
├── README.md
├── src
│ ├── components
│ ├── pages
│ └── utils
└── package.json
4 directories, 2 files
3階層まで表示
tree -L 3
大規模プロジェクトではまず-L 2で全体像を把握し、詳細を確認したいディレクトリを絞り込んでから深く見ていく使い方が効率的です。
ディレクトリのみ表示する(-d)
ファイル数が多い環境では、ディレクトリ構造だけを確認したい場面があります。-dオプションを使うとファイルを除外してディレクトリのみ表示できます。
tree -d
.
├── src
│ ├── components
│ └── pages
└── tests
3 directories
フォルダ構成の整理や、プロジェクト設計の確認に特に有効です。-Lと組み合わせることも多いです。
tree -d -L 2
隠しファイルを表示する(-a)
LinuxやmacOSでは、.から始まるファイル・ディレクトリは通常表示されません。設定ファイルや.gitディレクトリなどを含めて確認したいときは-aを使います。
tree -a
.
├── .git
│ ├── HEAD
│ └── config
├── .gitignore
├── README.md
└── src
└── index.js
特定のファイル・ディレクトリを除外する(-I)
-Iオプションでパターンを指定すると、一致するファイルやディレクトリを除外して表示できます。パターンには|で複数指定することも可能です。
node_modulesを除外
tree -I "node_modules"
複数のディレクトリを除外
tree -I "node_modules|vendor|.git"
特定の拡張子のファイルを除外
tree -I "*.log"
Javascriptプロジェクトでnode_modulesを除外する用途が最もよくある使い方です。
結果をテキストファイルに保存する
treeの出力をリダイレクトでファイルに保存すると、READMEや設計書にそのまま貼り付けられます。
ファイルに保存する基本
tree > tree.txt
オプションと組み合わせて保存
# 2階層まで、node_modulesを除外してファイルに保存
tree -L 2 -I "node_modules" > structure.txt
ターミナルの出力はそのままでは貼り付けると罫線(├── や └──)が含まれます。Markdownのコードブロックで囲うと正しく表示されます。
文字化け・罫線表示が崩れる場合の対処
treeの出力でツリーの罫線(├──や└──)が文字化けしたり、|--のようにASCII表示になる場合があります。
ロケール設定の確認
echo $LANG
ja_JP.UTF-8やen_US.UTF-8などUTF-8が設定されていれば、通常は罫線が正しく表示されます。
ASCIIモードで表示する(-A / –charset=ASCII)
罫線が崩れる環境では、ASCIIモードで出力する方法があります。
tree --charset=ASCII
.
|-- README.md
|-- src
| |-- index.js
| `-- utils.js
`-- package.json
ファイルに保存してメールやチャットで共有する場合は、ASCII表示の方が文字化けしにくいことがあります。
実務での使いどころ
READMEにディレクトリ構成を記載する
GitHubなどのREADMEにプロジェクト構成を記載するとき、treeの出力をそのまま使えます。
# READMEに貼り付ける構成図を生成
tree -L 2 -I "node_modules|.git" --charset=ASCII
出力をMarkdownのコードブロックで囲って貼り付けると、GitHubで正しく表示されます。
```
.
|-- README.md
|-- src
| |-- components
| `-- pages
`-- package.json
```
プロジェクト構成をチームに共有する
SlackやNotionなどにプロジェクト構成を共有したいときは、treeの出力をファイルに保存して共有します。
tree -L 3 -I "node_modules|vendor|.git" > project-structure.txt
新しいメンバーのオンボーディング時や、設計レビュー時にも活用できます。
ls や findコマンドとの違い
ファイル操作ではlsやfindもよく使われますが、用途が異なります。
| コマンド | 主な用途 | 特徴 |
|---|---|---|
ls | ファイルの一覧表示 | 指定ディレクトリの直下のみ、シンプルな一覧 |
tree | ディレクトリ構造の可視化 | 階層構造を視覚的に表示、構成の把握に特化 |
find | 条件を指定したファイル検索 | 名前・日付・サイズ等で絞り込み、アクション実行も可能 |
- 構造を確認したい →
tree - 条件を指定してファイルを探したい →
find - 単純な一覧表示 →
ls
findは検索・処理に強く、treeは構造の可視化に特化しています。「どこに何があるか把握したい」ならtree、「特定ファイルを探したい」ならfindが向いています。
WindowsのtreeコマンドとLinuxのtreeコマンドの違い
Windowsにもtreeコマンドが標準搭載されていますが、LinuxのものとはOSが異なるため、機能や動作が大きく違います。
| 項目 | Linux / macOSのtree | Windowsのtree |
|---|---|---|
| インストール | 多くの環境でインストールが必要 | 標準搭載(OS付属) |
| オプション | 豊富(-L, -d, -a, -I など多数) | 少ない(/F でファイル表示など) |
| 除外指定 | -I で柔軟に指定可能 | 除外機能なし |
| 出力先 | リダイレクトで自由に保存可能 | リダイレクト可能だが文字化けしやすい |
| 文字コード | UTF-8対応 | Shift-JIS / CP932のため注意が必要 |
Windows環境でLinuxと同様のtreeを使いたい場合は、WSL(Windows Subsystem for Linux)を使うか、Git Bashなどのターミナルを利用すると同等の機能が使えます。
実行結果の見方
treeの出力では、インデントと罫線によって階層構造が表現されます。
├──(横線):同じ階層にまだ続きがある項目└──(角線):同じ階層の最後の項目│(縦線):上位ディレクトリの継続を示す
末尾に表示されるX directories, Y filesはディレクトリとファイルの合計数のサマリです。
よくある疑問
treeコマンドが見つからない場合はどうするか
tree: command not foundと表示される場合は、インストールが必要です。Ubuntu/Debianならsudo apt install tree、CentOS/RHELならsudo yum install tree(またはdnf)、macOSならbrew install treeでインストールできます。
階層を浅く表示するにはどうするか
-Lオプションで表示する階層数を指定します。tree -L 2で2階層まで、tree -L 1で直下のみ表示できます。
node_modulesを除外するにはどうするか
tree -I "node_modules"で除外できます。複数除外したい場合はtree -I "node_modules|vendor|.git"のように|でつなぎます。
結果をコピー・保存するにはどうするか
tree > tree.txtでファイルに保存できます。macOSでクリップボードにコピーしたい場合はtree | pbcopy、Linuxではtree | xclip -selection clipboard(xclipのインストールが必要)を使います。
Windowsでも同じように使えるか
Windowsにはtreeコマンドが標準搭載されていますが、LinuxのものとはOSが違うため、-Lや-Iなどのオプションは使えません。WSL(Windows Subsystem for Linux)を使うか、Git Bashをインストールすると同等の機能が利用できます。
関連コマンド
ls: ファイルやディレクトリを一覧表示find: 条件を指定してファイルを検索du: ディレクトリやファイルのサイズを表示

コメント