【応用】Linux treeコマンドのオプションを使いこなす!表示を自由自在にカスタマイズ

はじめに

前回の記事
「【入門】Linux treeコマンドでディレクトリ構造を”見える化”!インストールから基本まで」
では、treeコマンドの基本的なインストール方法と、シンプルな使い方を紹介しました。

「もっと詳細な情報を見たい」「特定のファイルだけを表示したい」「特定のディレクトリは除外したい」といった、より具体的なニーズが出てくると思います。treeコマンドは、そんなあなたの要望に応えるための強力な「オプション」を多数備えています。

本記事では、treeコマンドの主要なオプションを徹底的に解説し、それらを組み合わせることで、知りたいファイル構造を自由自在にカスタマイズする方法をご紹介します。オプションを使いこなせば、treeコマンドは単なる表示ツールから、強力なファイル探索・分析ツールへと進化します。

この記事は、以下のような方を対象としています。

  • treeコマンドの基本的な使い方を理解している方。
  • treeコマンドの表示内容を、目的に応じてカスタマイズしたい開発者やシステム管理者。
  • より効率的なファイル構造の把握方法を求めている方。

さあ、treeコマンドのオプションをマスターして、あなたのLinux作業をさらに効率化しましょう!


目次


treeコマンド主要オプション一覧

treeコマンドには非常に多くのオプションがありますが、ここでは特に利用頻度の高い主要なオプションをカテゴリ別に紹介します。これらのオプションを使いこなすことで、あなたのtreeコマンドの活用範囲は格段に広がるでしょう。

カテゴリオプション説明
表示内容制御-a隠しファイル(.で始まるファイル)も表示tree -a
-dディレクトリのみを表示tree -d
-P pattern指定したパターンに一致するファイルのみ表示tree -P "*.js"
-I pattern指定したパターンに一致するファイルを除外tree -I "node_modules"
表示形式制御-L level表示する階層の深さを指定tree -L 2
-hファイルサイズを人間が読みやすい形式で表示tree -h
-pパーミッション情報を表示tree -p
-D最終更新日時を表示tree -D

表示内容を制御するオプション

隠しファイルを表示する (-a)

通常、treeコマンドは.で始まる隠しファイルや隠しディレクトリを表示しません。これらも表示したい場合は、-aオプションを使用します。

コマンド例(隠しファイルを含めずに表示):

tree

実行結果の例:

.
├── README.md
├── dir1
│   ├── file1.js
│   └── file2.txt
└── dir2
    ├── subdir1
    │   └── subfile1.js
    └── subdir2
        └── subfile2.md

5 directories, 5 files

コマンド例(隠しファイルを含めて表示):

tree -a

実行結果の例:

.
├── .bash_logout
├── .bashrc
├── .cache
│   └── motd.legal-displayed
├── .hidden_file.txt
├── .profile
├── .ssh
│   └── authorized_keys
├── .sudo_as_admin_successful
├── README.md
├── dir1
│   ├── file1.js
│   └── file2.txt
└── dir2
    ├── subdir1
    │   └── subfile1.js
    └── subdir2
        └── subfile2.md

7 directories, 12 files

ディレクトリのみを表示する (-d)

ファイルを含めず、ディレクトリ構造だけを表示したい場合に-dオプションが役立ちます。プロジェクトの骨格だけを確認したいときなどに便利です。

コマンド例(ファイルとディレクトリを表示):

tree

実行結果の例:

.
├── README.md
├── dir1
│   ├── file1.js
│   └── file2.txt
└── dir2
    ├── subdir1
    │   └── subfile1.js
    └── subdir2
        └── subfile2.md

5 directories, 5 files

コマンド例(ディレクトリのみを表示):

tree -d

実行結果の例:

.
├── dir1
└── dir2
    ├── subdir1
    └── subdir2

5 directories

特定のパターンに一致するファイルのみ表示する (-P)

-Pオプションを使うと、指定したパターン(ワイルドカード)に一致するファイルやディレクトリのみを表示できます。特定の種類のファイルだけを探したい場合に非常に強力です。

コマンド例(.jsファイルのみを表示):

tree -P "*.js"

実行結果の例:

.
├── dir1
│   └── file1.js
└── dir2
    ├── subdir1
    │   └── subfile1.js
    └── subdir2

5 directories, 2 files

コマンド例(.mdファイルと.txtファイルのみを表示):

tree -P "*.md|*.txt"

実行結果の例:

.
├── README.md
├── dir1
│   └── file2.txt
└── dir2
    ├── subdir1
    └── subdir2
        └── subfile2.md

5 directories, 3 files

特定のパターンを除外する (-I)

-Iオプションは、-Pオプションとは逆に、指定したパターンに一致するファイルやディレクトリを除外して表示します。例えば、node_modules.gitのような、通常は表示する必要のない巨大なディレクトリを除外するのに便利です。

コマンド例(dir2 ディレクトリを除外して表示):

tree -I "dir2"

実行結果の例:

.
├── README.md
└── dir1
    ├── file1.js
    └── file2.txt

2 directories, 3 files

コマンド例(.hidden_file.txt と subdir2 ディレクトリを除外して表示):

tree -I ".hidden_file.txt|subdir2"

実行結果の例:

.
├── README.md
├── dir1
│   ├── file1.js
│   └── file2.txt
└── dir2
    └── subdir1
        └── subfile1.js

4 directories, 4 files

表示形式をカスタマイズするオプション

階層の深さを指定する (-L)

-Lオプションを使うと、表示するディレクトリの階層の深さを指定できます。大規模なプロジェクトで、まずはトップレベルの構造だけを確認したい場合に便利です。

コマンド例(2階層まで表示):

tree -L 2

実行結果の例:

.
├── README.md
├── dir1
│   ├── file1.js
│   └── file2.txt
└── dir2
    ├── subdir1
    └── subdir2

5 directories, 3 files

コマンド例(3階層まで表示):

tree -L 3

実行結果の例:

.
├── README.md
├── dir1
│   ├── file1.js
│   └── file2.txt
└── dir2
    ├── subdir1
    │   └── subfile1.js
    └── subdir2
        └── subfile2.md

5 directories, 5 files

ファイルサイズを表示する (-h)

-hオプションは、ファイルサイズを人間が読みやすい形式(例: KB, MB, GB)で表示します。どのファイルがディスク容量を多く占めているかを確認したいときに役立ちます。

コマンド例(ファイルサイズを表示):

tree -h

実行結果の例 (ファイルサイズは環境によって異なります):

[4.0K]  .
├── [   0]  README.md
├── [4.0K]  dir1
│   ├── [   0]  file1.js
│   └── [   0]  file2.txt
└── [4.0K]  dir2
    ├── [4.0K]  subdir1
    │   └── [   0]  subfile1.js
    └── [4.0K]  subdir2
        └── [   0]  subfile2.md

5 directories, 5 files

パーミッション情報を表示する (-p)

-pオプションは、ls -lコマンドのように、ファイルやディレクトリのパーミッション情報を表示します。セキュリティ設定の確認や、アクセス権の問題をデバッグする際に有用です。

コマンド例 (パーミッション情報を表示):

tree -p

実行結果の例 (パーミッションは環境によって異なります)

[drwxr-x---]  .
├── [-rw-rw-r--]  README.md
├── [drwxrwxr-x]  dir1
│   ├── [-rw-rw-r--]  file1.js
│   └── [-rw-rw-r--]  file2.txt
└── [drwxrwxr-x]  dir2
    ├── [drwxrwxr-x]  subdir1
    │   └── [-rw-rw-r--]  subfile1.js
    └── [drwxrwxr-x]  subdir2
        └── [-rw-rw-r--]  subfile2.md

5 directories, 5 files

最終更新日時を表示する (-D)

-Dオプションは、ファイルやディレクトリの最終更新日時を表示します。最近変更されたファイルを探したい場合などに便利です。

コマンド例:

tree -D

実行結果の例 (日付は実行時のものになります)

[Oct 11 20:09]  .
├── [Oct 11 20:09]  README.md
├── [Oct 11 20:09]  dir1
│   ├── [Oct 11 20:09]  file1.js
│   └── [Oct 11 20:09]  file2.txt
└── [Oct 11 20:09]  dir2
    ├── [Oct 11 20:09]  subdir1
    │   └── [Oct 11 20:09]  subfile1.js
    └── [Oct 11 20:09]  subdir2
        └── [Oct 11 20:09]  subfile2.md

5 directories, 5 files

オプションの組み合わせで実現する高度な表示

treeコマンドの真価は、これらのオプションを組み合わせて使うことで発揮されます。複数のオプションを組み合わせることで、あなたの知りたい情報をピンポイントで抽出できます。


例: 特定の拡張子のファイルだけを2階層まで表示

例えば、現在のディレクトリから2階層目までの.jsファイルだけを表示したい場合は、-L 2-P "*.js"を組み合わせます。

tree -L 2 -P "*.js"

実行結果の例:

.
├── dir1
│   └── file1.js
└── dir2
    ├── subdir1
    └── subdir2

5 directories, 1 file
[!TIP]: オプションは複数指定できますが、一部のオプションは同時に使用できない場合があります(例: -P-Iを同じ階層で同時に使うと意図しない結果になることがあります)。試行錯誤しながら、最適な組み合わせを見つけてください。

FAQ

Q1: オプションを複数組み合わせることはできますか?

はい、できます。多くのオプションは同時に指定することが可能です。例えば、tree -L 2 -a -hのように、複数のオプションをスペースで区切って記述します。ただし、一部のオプションは排他的な関係にあるため、同時に指定できない場合もあります。その際はエラーメッセージが表示されるか、意図しない結果になることがあります。

Q2: treeコマンドの出力結果が多すぎて見にくい場合、どうすればいいですか?

以下の方法を試してみてください。

  • -Lオプションで階層を制限する: まずは浅い階層で全体像を把握し、必要に応じて深く掘り下げていくのが効果的です。
  • -Iオプションで不要なディレクトリを除外する: node_modules.gitなど、大量のファイルを含むディレクトリを除外することで、見たい情報がクリアになります。
  • lessコマンドと組み合わせる: tree | lessとすることで、ページャー機能を使って出力をスクロールしながら確認できます。

Q3: treeコマンドで特定のファイルタイプだけを数えることはできますか?

treeコマンド単体ではファイルタイプごとの数を直接数える機能はありませんが、grepwcコマンドと組み合わせることで実現できます。

tree -P "*.js" | grep -c ".js"

このコマンドは、.jsファイルのみを表示し、その行数をgrep -cで数えることで、.jsファイルの数を概算できます。ただし、これはファイル名に.jsが含まれる行数を数えているため、厳密なファイル数とは異なる場合があります。


まとめ:オプションでtreeコマンドの表現力を高める

本記事では、treeコマンドの主要なオプションとその使い方、そして組み合わせ例を解説しました。

  • -a, -d, -P, -Iなどのオプションで表示内容を細かく制御できます。
  • -L, -h, -p, -Dなどのオプションで表示形式をカスタマイズできます。
  • 複数のオプションを組み合わせることで、より高度で具体的なニーズに対応できます。

treeコマンドは、オプションを使いこなすことで、単なるディレクトリ表示ツールから、あなたの開発・運用作業を強力にサポートする分析ツールへと変貌します。ぜひ、ご自身の環境で様々なオプションを試して、その表現力の高さを実感してください。

treeコマンドのオプションを使いこなせるようになったら、次は他のLinuxコマンドと連携して、さらに強力なファイル探索・分析に挑戦しましょう。grepawkxargsといったコマンドと組み合わせることで、treeコマンドの出力を「情報源」として活用し、自動化や高度なデータ処理が可能になります。

次回の記事「【実践】Linux treeコマンドと他コマンド連携!ファイル探索・分析を効率化する」では、treeコマンドの出力を他のコマンドと連携させる実践的なテクニックを徹底解説します。お楽しみに!

この記事が役に立ったら、ぜひチームに共有したり、X(旧Twitter)で感想をポストしてください!


参考資料


免責事項

本記事の内容は、執筆時点での情報に基づいています。コマンドの挙動やインストール方法は、OSのバージョンや環境によって異なる場合があります。実行する際は、ご自身の責任において十分な確認を行ってください。


SNSでもご購読できます。

コメントを残す

*