tree コマンド入門 - ディレクトリ構造をツリー表示する
この記事で解決できること
treeで ディレクトリ構造を一目で把握 できるようになる-Lで 深さを制限 して、巨大なフォルダでも見やすく表示できる-d-a-Iで 必要なものだけ を絞り込めるlsの繰り返しから 構造の可視化 に切り替えられる
対象読者:Linux 入門者、ls と cd でフォルダの中を行き来するのに疲れた方
導入:リナの「ls 迷子」事件
ls して cd して、また ls して...ってやってるんですけど、全体像がぜんぜん頭に入ってこないんです。ls 迷子」ね。フォルダを一段ずつ潜って戻ってを繰り返すと、いま自分がどこにいるのか分からなくなるよね。tree コマンドだよ。ディレクトリの中身を 枝分かれの図 で表示してくれる。今日はこれを覚えよう。結論を先に
tree= ディレクトリ構造を ツリー(枝分かれ図)で可視化 するコマンド- そのまま
treeで現在地以下を表示、tree パスで場所を指定 - 巨大フォルダは
tree -L 2(深さ制限)とtree -I 'node_modules'(除外)が必須
1. tree とは何か?
結論:
treeはディレクトリの中身を枝分かれの図で表示するコマンド。lsを何度も叩かなくても階層構造が一目で分かる。
tree って ls と何が違うんですか?ls は その場所の中身だけ を一覧にする。tree は その下の階層をぜんぶ辿って、枝分かれの図で見せてくれるんだ。ls を全フォルダで自動的に実行してくれるみたいな?実際に表示するとこんな感じになる。
.
├── README.md
├── src
│ ├── index.js
│ └── utils
│ └── format.js
└── tests
└── index.test.js
3 directories, 4 files
図の読み方
├──└──:その階層にあるファイル / フォルダ(└──は最後の要素)│:枝が下に続いていることを示す縦線- インデント(字下げ)の深さ=階層の深さ
- 最後の行:ディレクトリ数とファイル数の合計
2. インストール
結論:
treeは標準では入っていないことが多い。apt/dnfでインストールする。
tree と打って「command not found」が出たらインストールしよう。# Ubuntu / Debian 系 $ sudo apt install tree # RHEL / Fedora 系 $ sudo dnf install tree # macOS(Homebrew) $ brew install tree
パッケージ名はどのディストリビューションでも tree で共通。インストール後、tree --version でバージョンを確認できる。
3. 基本の使い方
結論: 引数なしの
treeでカレントディレクトリ以下を表示。tree パスで対象の場所を指定する。
カレントディレクトリを表示
# いまいる場所の中身をツリー表示 $ tree
場所を指定して表示
# 指定したディレクトリを表示 $ tree /etc # ホームディレクトリを表示 $ tree ~
tree って打っただけで、フォルダの奥の奥まで全部出てきました! ...ちょっと出すぎて画面が流れちゃいましたけど。tree は デフォルトで一番下の階層まで全部 辿るんだ。だから大きいフォルダでそのまま叩くと、画面が滝みたいに流れる。次はそれを抑える方法を覚えよう。4. 深さを制限する(-L)
結論:
tree -L 数字で表示する階層の深さを制限できる。巨大なフォルダはまず-L 1や-L 2で全体像を掴む。
-L(Level)を使う。-L 2 なら 2 階層目まで しか表示しない。これで全体像だけサッと確認できる。# 1階層だけ(直下の中身のみ、ls に近い) $ tree -L 1 # 2階層まで $ tree -L 2 /var/log
/var/log ├── apt │ ├── history.log │ └── term.log ├── journal ├── syslog └── dpkg.log 2 directories, 4 files
-L の使いどころ
- 初めて見るフォルダは
tree -L 1→-L 2と 浅いところから 深掘りする - 深さは 1 以上の整数で指定(
-L 0はエラー) - 「全体の地図」が欲しいときは浅く、「特定フォルダの詳細」は深く
5. 表示するものを絞り込む
結論:
-dでディレクトリのみ、-aで隠しファイルも表示、-Iで不要なフォルダを除外できる。
tree が一気に実用的になるよ。ディレクトリだけ表示(-d)
# フォルダ構造だけを把握したいとき $ tree -d -L 2
-d(directory)はファイルを全部隠して フォルダの骨格だけ 見せてくれる。プロジェクトの構成を説明するときに重宝するよ。隠しファイルも表示(-a)
# .git や .env などドット始まりも表示 $ tree -a -L 1
tree はデフォルトで隠しファイルを表示しない
.bashrc や .git のような ドット(.)で始まるファイル は、-a(all)を付けないと表示されない。「設定ファイルが見当たらない」ときは -a を付け忘れていないか確認しよう。
不要なフォルダを除外(-I)
# node_modules を除外して表示 $ tree -I 'node_modules' # 複数を | で区切って除外 $ tree -I 'node_modules|.git|dist'
node_modules って中身が何万ファイルもあって、tree すると永遠に流れ続けるやつですよね...。-I(Ignore)で除外するのが定番。パターンは |(パイプ)で区切れば複数指定できる。node_modules .git dist あたりは除外の常連だね。逆に「これだけ見たい」なら -P
特定のパターンだけ表示したいときは -P(Pattern)を使う。tree -P '*.js' で .js ファイルだけを残せる。空のフォルダが邪魔なときは --prune を併用すると、該当ファイルを含まないフォルダが消えてスッキリする。
6. 見やすく・サイズ付きで表示する
結論:
-Fで種類の記号付き、-h --duでディレクトリの合計サイズ付き、-o ファイルでファイルに保存できる。
種類が分かる記号を付ける(-F)
# ディレクトリに / 、実行ファイルに * を付ける $ tree -F -L 1
ls -F と同じ記号が付く。末尾の / でフォルダ、* で実行可能ファイルが一目で分かる。
サイズを表示する(-h / --du)
# 各ファイルのサイズを人間が読みやすい単位で $ tree -h # ディレクトリのサイズ(配下の合計)も表示 $ tree -h --du -L 1
--du の意味
--du は各ディレクトリのサイズを 配下にあるファイルの合計 として表示する(du コマンドと同じ発想)。-h(human readable)と組み合わせると 1.2K 3.4M のような読みやすい単位になる。「どのフォルダが容量を食っているか」をざっくり知りたいときに便利。
ncdu みたいに容量調査にも使えますか?tree は「構造を図で残す」、ncdu は「容量を探して掃除する」と使い分けるといいよ。結果をファイルに保存(-o)
# ツリーをテキストファイルに書き出す $ tree -L 2 -o structure.txt
README に「ディレクトリ構成」を載せるとき、tree -L 2 の出力をコピペすると一瞬で構成図が作れる。除外したいものは -I で消してから貼ると綺麗になる。
7. ミニ課題:自分の環境で試してみよう
結論: 深さ制限・ディレクトリのみ・除外指定の3問で
treeの実用オプションを定着させる。
課題 1:ホームディレクトリを tree -L 1 で表示し、直下に何があるかを把握する
課題 2:tree -d -L 2 ~ で、ホーム以下の フォルダの骨組みだけ を表示する
課題 3:適当なプロジェクトフォルダで tree -I '.git' を実行し、.git が除外されることを確認する
課題 1 のヒント
tree -L 1 ~
-L 1 で 1 階層だけに制限すれば、ls のように直下の中身だけがツリーで並ぶ。
課題 2 のヒント
tree -d -L 2 ~
-d でファイルを隠し、-L 2 で深さを 2 階層に制限。フォルダの骨格だけが見える。
課題 3 のヒント
tree -I '.git'
-I の後ろに除外したい名前を書く。.git が消えて、ソースの構造だけが残る。複数除外したいときは '.git|node_modules' のように | で区切る。
8. よくある落とし穴
結論: 深さ無制限で巨大フォルダを叩く、隠しファイルの表示忘れ、除外パターンのクォート忘れに注意。
やりがちな失敗 3 つ
- 大きいフォルダで
-Lなしで実行 →node_modulesなどで画面が滝のように流れる。まず-L 1か-L 2から - 隠しファイルが見えないと焦る →
treeはデフォルトで.始まりを隠す。-aを付け忘れていないか確認 - 除外パターンをクォートし忘れる →
-I node_modules|.gitのように'(シングルクォート)で囲まないと、|がシェルのパイプと解釈されて意図しない動作になる。-I 'node_modules|.git'が正しい
安全で使いやすい型
- 初めて見るフォルダ:
tree -L 2(浅く全体像) - 構成を説明したい:
tree -d -L 2(骨組みだけ) - リポジトリを見る:
tree -L 2 -I 'node_modules|.git|dist'(ノイズを除外)