tree コマンド

ディレクトリの内容を階層的なツリー構造で表示します。

概要

tree コマンドは、ディレクトリの内容を再帰的にツリー状のフォーマットで一覧表示し、ファイルとディレクトリの関係を示します。ディレクトリ構造を視覚的に表現することで、ファイルやサブディレクトリの構成を理解しやすくします。

オプション

-a

隠しファイル(ドットで始まるファイル)を含むすべてのファイルを表示します

$ tree -a
.
├── .git
│   ├── HEAD
│   ├── config
│   └── hooks
├── .gitignore
├── README.md
└── src
    ├── .env
    └── main.js

3 directories, 6 files

-d

ファイルを除き、ディレクトリのみを一覧表示します

$ tree -d
.
├── docs
├── node_modules
│   ├── express
│   └── lodash
└── src
    └── components

5 directories

-L, --level

ディレクトリの再帰の深さを制限します

$ tree -L 2
.
├── docs
│   ├── api.md
│   └── usage.md
├── node_modules
│   ├── express
│   └── lodash
├── package.json
└── src
    ├── components
    └── index.js

5 directories, 4 files

-C

出力に色付けを追加します

$ tree -C
# 出力はディレクトリ、ファイル、実行可能ファイルが異なる色で表示される

-p

各ファイルのファイルタイプとパーミッションを表示します

$ tree -p
.
├── [drwxr-xr-x]  docs
│   ├── [-rw-r--r--]  api.md
│   └── [-rw-r--r--]  usage.md
├── [-rw-r--r--]  package.json
└── [drwxr-xr-x]  src
    └── [-rwxr-xr-x]  index.js

2 directories, 4 files

-s

各ファイルのサイズを表示します

$ tree -s
.
├── [       4096]  docs
│   ├── [        450]  api.md
│   └── [        890]  usage.md
├── [        1240]  package.json
└── [       4096]  src
    └── [         320]  index.js

2 directories, 4 files

-h

サイズをより読みやすい形式で表示します

$ tree -sh
.
├── [4.0K]  docs
│   ├── [450]   api.md
│   └── [890]   usage.md
├── [1.2K]  package.json
└── [4.0K]  src
    └── [320]   index.js

2 directories, 4 files

--filelimit n

n個以上のエントリを含むディレクトリの内容を表示しません

$ tree --filelimit 10
# 10個以上のファイルを持つディレクトリの内容は表示されない

使用例

基本的なディレクトリ一覧

$ tree
.
├── docs
│   ├── api.md
│   └── usage.md
├── package.json
└── src
    ├── components
    │   ├── Button.js
    │   └── Input.js
    └── index.js

3 directories, 5 files

深さを制限してファイルサイズを表示

$ tree -L 1 -sh
.
├── [4.0K]  docs
├── [1.2K]  package.json
└── [4.0K]  src

2 directories, 1 file

パターンによるフィルタリング

$ tree -P "*.js"
.
├── docs
├── package.json
└── src
    ├── components
    │   ├── Button.js
    │   └── Input.js
    └── index.js

3 directories, 3 files

ファイルへの出力

$ tree > directory_structure.txt
$ cat directory_structure.txt
.
├── docs
│   ├── api.md
│   └── usage.md
├── package.json
└── src
    ├── components
    │   ├── Button.js
    │   └── Input.js
    └── index.js

3 directories, 5 files

ヒント

バージョン管理ディレクトリを除外する

tree -I "node_modules|.git" を使用して、node_modulesや.gitなどの特定のディレクトリを出力から除外すると、プロジェクトディレクトリのツリーがより読みやすくなります。

ドキュメント用のASCII出力を作成する

tree -A を使用すると、グラフィック文字の代わりにASCII文字が使用されます。これは、文字サポートが限られた環境で表示する必要があるドキュメントを作成する際に便利です。

ファイルとディレクトリをカウントする

tree --noreport を使用すると、最後のファイル/ディレクトリレポートが抑制され、要約なしでツリー構造だけを表示できます。

出力形式をカスタマイズする

-pugh のようなオプションを組み合わせると、パーミッション、ユーザー名、グループ名、人間が読みやすいサイズをすべて一度に表示して、包括的なディレクトリリストを作成できます。

よくある質問

Q1. macOSにtreeをインストールするにはどうすればよいですか?

A. Homebrewを使用して brew install tree コマンドでインストールできます。

Q2. 特定のディレクトリを出力から除外するにはどうすればよいですか?

A. -I オプションの後にパターンを指定します。例えば、tree -I "node_modules|.git" でnode_modulesと.gitディレクトリを除外できます。

Q3. 表示されるディレクトリの深さを制限するにはどうすればよいですか?

A. -L オプションの後に数字を指定します。例えば、tree -L 2 で2レベルのディレクトリのみを表示します。

Q4. treeの出力をターミナルではなくファイルに保存できますか?

A. はい、リダイレクトを使用します:tree > output.txt で出力をファイルに保存できます。

Q5. 隠しファイルを表示するにはどうすればよいですか?

A. -a オプションを使用します:tree -a で隠しファイルを含むすべてのファイルを表示します。

参考文献

https://linux.die.net/man/1/tree

改訂履歴