[Linux] treeコマンドの使い方 – ディレクトリをツリー形式で表示
treeコマンドは、ディレクトリ構造をツリー形式で表示するためのLinuxコマンドです。
基本的な使い方は、ターミナルで tree
と入力するだけで、カレントディレクトリの内容が階層的に表示されます。
特定のディレクトリを指定する場合は「tree ディレクトリ名」とします。
オプションとして -L
で表示する階層の深さを指定でき、 -a
で隠しファイルも表示可能です。
-f
を使うとフルパスで表示されます。
- treeコマンドの基本的な使い方と主要オプション
- 応用的な使い方や他のコマンドとの連携方法
- 出力結果のカスタマイズ方法とオプションの活用
- 特定のファイルやディレクトリの表示方法
- treeコマンドのインストールやトラブルシューティング
treeコマンドとは
tree
コマンドは、LinuxやUnix系のシステムでディレクトリ構造をツリー形式で視覚的に表示するためのコマンドです。
通常、ファイルやディレクトリの一覧を表示する際にはls
コマンドが使われますが、tree
コマンドを使うと、ディレクトリの階層構造を直感的に把握することができます。
特に、複数のサブディレクトリが存在する場合や、ディレクトリの中にどのようなファイルが含まれているかを一目で確認したい場合に便利です。
tree
コマンドは、デフォルトではカレントディレクトリから開始し、すべてのサブディレクトリとファイルを再帰的に表示します。
また、さまざまなオプションを使うことで、表示する階層の深さを制限したり、特定のファイルタイプのみを表示したりすることも可能です。
基本的なオプションの使い方
tree
コマンドには、さまざまなオプションが用意されており、表示内容をカスタマイズすることができます。
ここでは、よく使われる基本的なオプションについて解説します。
-Lオプション:表示する階層の深さを指定
-L
オプションを使うと、表示するディレクトリの階層の深さを指定できます。
デフォルトではすべての階層が表示されますが、-L
オプションを使うことで、指定した階層までのディレクトリとファイルのみを表示します。
tree -L 2
上記の例では、2階層目までのディレクトリとファイルが表示されます。
.
├── dir1
│ ├── file1
│ └── file2
├── dir2
└── file3
-aオプション:隠しファイルを表示
-a
オプションを使うと、通常は表示されない隠しファイル(.
で始まるファイル)も表示されます。
隠しファイルを含めてディレクトリ構造を確認したい場合に便利です。
tree -a
.
├── .hiddenfile
├── dir1
│ └── file1
└── file2
-fオプション:フルパスで表示
-f
オプションを使うと、各ファイルやディレクトリのフルパスを表示します。
ファイルの場所を明確にしたい場合に役立ちます。
tree -f
.
├── ./dir1
│ └── ./dir1/file1
└── ./file2
-dオプション:ディレクトリのみを表示
-d
オプションを使うと、ファイルを無視してディレクトリのみを表示します。
ディレクトリ構造だけを確認したい場合に便利です。
tree -d
.
├── dir1
└── dir2
-hオプション:ファイルサイズを人間が読みやすい形式で表示
-h
オプションを使うと、ファイルサイズがバイト単位ではなく、KBやMBなどの人間が読みやすい形式で表示されます。
tree -h
.
├── [4.0K] dir1
│ └── [1.2K] file1
└── [2.0K] file2
-pオプション:ファイルのパーミッションを表示
-p
オプションを使うと、各ファイルやディレクトリのパーミッション(アクセス権)が表示されます。
ファイルの権限を確認したい場合に便利です。
tree -p
.
├── [drwxr-xr-x] dir1
│ └── [-rw-r--r--] file1
└── [-rw-r--r--] file2
-tオプション:ファイルを作成日時順に表示
-t
オプションを使うと、ファイルやディレクトリが作成された日時順に表示されます。
新しいファイルやディレクトリを確認したい場合に便利です。
tree -t
.
├── dir1
│ └── file1
└── file2
応用的な使い方
tree
コマンドは基本的な使い方だけでなく、応用的な使い方も可能です。
ここでは、特定のファイルタイプの表示や、他のコマンドとの組み合わせ、出力結果の保存など、より高度な使い方を紹介します。
特定のファイルタイプのみを表示する
tree
コマンドでは、-P
オプションを使って特定のファイルタイプ(拡張子)をフィルタリングして表示することができます。
例えば、.txt
ファイルのみを表示したい場合は以下のようにします。
tree -P "*.txt"
.
├── dir1
│ └── file1.txt
└── file2.txt
このように、-P
オプションにワイルドカードを使って、特定のパターンに一致するファイルだけを表示できます。
出力結果をファイルに保存する
tree
コマンドの出力結果をファイルに保存したい場合は、リダイレクトを使います。
以下の例では、tree
コマンドの結果をoutput.txt
というファイルに保存します。
tree > output.txt
このコマンドを実行すると、ツリー構造がoutput.txt
に保存され、後で確認することができます。
grepと組み合わせて特定のファイルを検索
tree
コマンドの出力結果をgrep
コマンドと組み合わせることで、特定のファイル名やディレクトリ名を検索することができます。
例えば、file1
という名前のファイルを検索する場合は以下のようにします。
tree | grep "file1"
│ └── file1.txt
このように、grep
を使うことで、ツリー構造の中から特定のファイルやディレクトリを簡単に見つけることができます。
シンボリックリンクを表示する
tree
コマンドは、デフォルトでシンボリックリンクを表示しますが、リンク先のファイルやディレクトリも表示したい場合は、-l
オプションを使います。
tree -l
.
├── dir1
│ └── file1 -> /path/to/realfile
└── file2
このように、シンボリックリンクがどのファイルやディレクトリを指しているかを確認することができます。
色付きで表示する
tree
コマンドは、デフォルトで色付きの出力をサポートしています。
色付き表示は、ファイルやディレクトリの種類に応じて異なる色で表示されるため、視覚的に区別しやすくなります。
もし色付き表示が無効になっている場合は、-C
オプションを使って強制的に色を有効にすることができます。
tree -C
このオプションを使うと、ディレクトリは青色、シンボリックリンクは緑色など、ファイルの種類に応じた色で表示されます。
treeコマンドの実行結果をカスタマイズ
tree
コマンドは、さまざまなオプションを使って出力結果をカスタマイズすることができます。
ここでは、文字エンコーディングの指定や、ディレクトリの表示順序、空のディレクトリの非表示など、出力結果をより見やすくするためのオプションを紹介します。
–charsetオプションで文字エンコーディングを指定
--charset
オプションを使うと、出力結果の文字エンコーディングを指定することができます。
デフォルトではシステムのロケールに依存しますが、特定のエンコーディングを指定したい場合に便利です。
例えば、UTF-8で出力したい場合は以下のようにします。
tree --charset utf-8
このオプションは、特に異なるエンコーディングを使用するシステム間でファイル構造を確認する際に役立ちます。
–noreportオプションでファイル数の統計を非表示にする
tree
コマンドは、デフォルトでディレクトリの最後にファイル数やディレクトリ数の統計情報を表示しますが、--noreport
オプションを使うと、この統計情報を非表示にすることができます。
tree --noreport
.
├── dir1
│ └── file1
└── file2
このオプションを使うと、出力がシンプルになり、ファイル数やディレクトリ数が不要な場合に便利です。
–dirsfirstオプションでディレクトリを先に表示
--dirsfirst
オプションを使うと、ディレクトリをファイルよりも先に表示することができます。
デフォルトでは、ファイルとディレクトリはアルファベット順に表示されますが、このオプションを使うと、ディレクトリが優先的に表示されます。
tree --dirsfirst
.
├── dir1
│ └── file1
└── file2
このオプションは、ディレクトリ構造を優先的に確認したい場合に便利です。
–pruneオプションで空のディレクトリを非表示にする
--prune
オプションを使うと、空のディレクトリを出力結果から非表示にすることができます。
空のディレクトリが多い場合や、実際にファイルが存在するディレクトリだけを確認したい場合に便利です。
tree --prune
.
└── dir1
└── file1
このオプションを使うと、空のディレクトリが出力されないため、必要な情報だけを効率的に確認できます。
treeコマンドの実行結果を他のコマンドと連携
tree
コマンドは、他のコマンドと組み合わせることで、さらに便利に使うことができます。
ここでは、less
やgrep
、find
、xargs
などのコマンドと連携して、tree
コマンドの出力を効率的に活用する方法を紹介します。
lessコマンドでページング表示
tree
コマンドの出力が長くなりすぎて、画面に収まりきらない場合は、less
コマンドと組み合わせてページング表示を行うことができます。
これにより、出力をスクロールしながら確認することが可能です。
tree | less
このコマンドを実行すると、less
のインターフェースでtree
の出力を確認でき、j
やk
キーで上下にスクロールできます。
大量のファイルやディレクトリがある場合に便利です。
grepコマンドで特定のファイルをフィルタリング
tree
コマンドの出力結果をgrep
コマンドと組み合わせることで、特定のファイルやディレクトリをフィルタリングして表示することができます。
例えば、log
という名前が含まれるファイルやディレクトリを検索する場合は以下のようにします。
tree | grep "log"
│ └── error_log.txt
このように、grep
を使うことで、ツリー構造の中から特定のファイルやディレクトリを簡単に見つけることができます。
findコマンドとの違いと使い分け
tree
コマンドとfind
コマンドは、どちらもディレクトリ構造を表示するために使われますが、用途が異なります。
tree
は視覚的にディレクトリ構造を確認するためのコマンドで、階層構造をツリー形式で表示します。
一方、find
は、特定の条件に一致するファイルやディレクトリを検索するためのコマンドです。
例えば、find
コマンドで特定の拡張子を持つファイルを検索する場合は以下のようにします。
find . -name "*.txt"
./dir1/file1.txt
./file2.txt
tree
は視覚的な確認に適しており、find
は検索や条件指定に強いという違いがあります。
用途に応じて使い分けると良いでしょう。
xargsコマンドでファイルを一括処理
tree
コマンドの出力結果をxargs
コマンドと組み合わせることで、ファイルを一括処理することができます。
例えば、tree
コマンドで表示されたファイルを一括で削除したい場合は、以下のようにします。
tree -if --noreport | grep ".txt" | xargs rm
このコマンドは、まずtree
コマンドでファイルのフルパスを表示し、grep
で.txt
ファイルをフィルタリングし、xargs
でそのファイルをrm
コマンドに渡して削除します。
xargs
を使うことで、tree
コマンドの出力結果を他のコマンドに渡して一括処理が可能になります。
よくある質問
まとめ
この記事では、tree
コマンドの基本的な使い方から応用的なオプション、他のコマンドとの連携方法までを詳しく解説しました。
tree
コマンドを使うことで、ディレクトリ構造を視覚的に把握しやすくなり、さまざまなオプションを駆使することで、より効率的にファイルやディレクトリを管理できるようになります。
tree
コマンドを活用して、日々の作業をよりスムーズに進めてみてください。