連載
» 2018年02月01日 05時00分 公開

Linux基本コマンドTips(179):【 tree 】コマンド――ディレクトリをツリー状に表示する

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、ディレクトリやファイルをツリー状に表示する「tree」コマンドです。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、ディレクトリやファイルをツリー状に表示する「tree」コマンドです。

treeコマンドとは?

 「tree」は、ディレクトリやファイルをツリー状に表示するコマンドです。lsコマンドと同様に、パーミッションなどのファイルの属性も表示できます。

 CentOSやUbuntuには、デフォルトでtreeコマンドがインストールされていません。「yum install tree」や「apt install tree」でインストール可能です。インストールの実行にはroot権限が必要です(連載第68回)。



treeコマンドの書式

tree [オプション] [ディレクトリ ……]

※[ ]は省略可能な引数を示しています。




treeの主なオプション(表示対象関係)

短いオプション 長いオプション 意味
-a 名前がドットから始まるディレクトリも含めて表示する(「.」と「..」は対象外)
-d ディレクトリだけを表示する
-l シンボリックリンクをたどる
-f 各ファイルやディレクトリを指定したディレクトリからのパスを付けて表示する(指定しなかった場合はカレントディレクトリから)
-x 他のファイルシステムを対象としない(findコマンドの-xdevオプション相当)
-L 深さ 表示するディレクトリの深さ(1以上の整数を指定)
-P パターン パターンにマッチしたファイルだけを表示する(該当するファイルがない場合もディレクトリは表示)。パターンにはパス名展開と同様に「*」「?」「[A-Z]」などを用いた指定が可能
-I パターン パターンにマッチしなかったファイルだけを表示する
--prune 空のディレクトリを出力しない(-Pや-Iで、表示対象のファイルが見つからなかったディレクトリを表示しない)
--filelimit エントリ数 指定した数を超えるエントリを持つディレクトリの内部を表示しない(--filelimit 10では、表示内容が10以内のディレクトリの内部のみを表示する)
-o ファイル名 指定したファイルにtreeの出力を保存する

treeの主なオプション(並べ替え関係)

短いオプション 長いオプション 意味
-t ファイルの更新時刻順に表示
-c ファイルのステータス変更時刻順で表示
-r アルファベットの逆順で表示(-tや-cと併用した場合は時刻の逆順)
-U 並べ替えずに表示(デフォルトはアルファベット順)
--dirsfirst ディレクトリを先に表示(-Uを指定している場合は無効)

treeの主なオプション(表示内容関係)

短いオプション 長いオプション 意味
-q 表示できない文字を「?」で置き換えて表示
-N 表示できない文字を8進数で置き換えて表示
-Q ファイル名を二重引用符で囲んで表示
-p パーミッションを表示(「ls -l」相当)
-u ファイルの所有者を表示
-g ファイルの所有グループを表示
-s ファイルのサイズ(バイト数)を表示
-h ファイルのサイズを単位付きで表示
--si ファイルのサイズをSI系(1000の倍数)の単位付きで表示
--du ディレクトリのサイズ(「du -c」相当)を表示
-D ファイルの更新時刻を表示(「-c」を併用している場合はステータスの変更時刻を表示)
--timefmt フォーマット タイムスタンプの表示フォーマットを指定(%Y、%m、%dなどが使用可能 ※1)、「-D」オプションを指定した扱いとなる
-F ファイルの種類を表示(「ls -F」相当)
--inodes ファイルのiノード番号を表示
--device ファイルのデバイス番号を表示
--noreport 表示したディレクトリとファイルの個数を表す末尾のレポート行を表示しない

※1 「--timefmt %F」で「年-月-日」、「--timefmt "%Y/%m/%d(%a) %H:%M:%S"」で「年/月/日(曜日) 時:分:秒」(年は4桁、%Yを%yにすると2桁になる)など。



treeの主なオプション(グラフィックおよびHTML/XML関係)

短いオプション 長いオプション 意味
-i ツリー状にインデントせずに表示(本文参照)
-A ツリー表示の線を滑らかなけい線で表示
-S ツリー表示の線をASCIIのけい線文字で表示(「--charset=IBM437」相当)
--charset 文字セット ツリーを表す線に使用する文字セットや、HTMLやXML出力時に指定する文字セットを指定
-C 常に色付きで表示(色の設定は環境変数LS_COLORSに従う)
-n 常に色なしで表示(「-C」を打ち消す)
-H URLの起点 HTML形式で表示。ファイル名部分は「URLの起点」とパスを組み合わせたリンクとなる(本文参照)
--nolinks HTML出力時にリンクを出力しない
-T タイトル HTML出力時のタイトル(title要素およびH1要素で出力する)
-X XML形式で出力


ディレクトリやファイルをツリー状に表示する

 「tree ディレクトリ」で、指定したディレクトリ下のファイルやディレクトリをツリー状に表示します。ディレクトリを指定しなかった場合はカレントディレクトリを対象とします。

 対象となるファイルやディレクトリが多過ぎる場合は「-d」でディレクトリのみを表示します。さらに「-L」で表示するディレクトリの深さを指定できます。

 デフォルトでは「|」記号や「-」記号でツリーを表現します(画面1)。UTF-8が使用できる環境であれば「-A」または「--charset UTF-8」を指定することで、けい線をつなげ、滑らかに表示できます(画面2) ※2。

※2 環境変数LANGが「ja_JP.UTF-8」の場合は「-A」などが必要だが、「en_US.UTF-8」の場合は、デフォルトで滑らかに表示される。



コマンド実行例

tree

(カレントディレクトリ以下のディレクトリおよびファイルをツリー状に表示)

tree ディレクトリ

(指定したディレクトリ以下を表示)

tree -d -L 2 ディレクトリ

(指定したディレクトリ以下を、ディレクトリのみ、2階層目まで表示)

tree -d -L 2 /usr/local

(/usr/local以下のディレクトリを2階層目まで表示)(画面1

tree -A -d -L 2 /usr/local

(ツリー構造を表現する線を滑らかに表示したところ)(画面2


画面1 画面1 指定したディレクトリ以下を2回層分表示したところ
画面2 画面2 ツリー構造を表現する線を滑らかに表示した


ファイル名で絞り込み表示する

 「-P パターン」でパターンに該当する名前のファイルだけを表示できます。パターンには、bashのコマンドラインで使用する「*」や「.」「[A-Z]」のような指定が可能です。ただし、ドットファイルやドットから始まるディレクトリを対象にしたい場合は「-a」オプションも併用する必要があります。

 逆に、「-I パターン」でパターンに該当しないファイルだけを表示することも可能です。さらにパターンに該当するファイルを含まないディレクトリを非表示にしたい場合は、「--prune」オプションを使います。

 画面3では、前述の「-A」オプション付きでtreeコマンドを実行しています。

コマンド実行例

tree -P パターン ディレクトリ

(指定したパターンに当てはまるファイルだけを表示)

tree -P パターン --prune ディレクトリ

(指定したパターンに当てはまるファイルだけを表示、該当するファイルがないディレクトリは表示しない)

tree -P "*bash*" /etc

(/etc以下で、名前にbashを含むファイルを表示)(画面3


画面3 画面3 「bash」を含むファイルを表示したところ


ファイルをパス付きで一覧表示する

 「-f」オプションで、ファイルやディレクトリの名前をフルパスで表示します。

 ファイルのリストが欲しい場合は、「-i」オプションでツリー状にインデントしない表示にできます。さらに最後に表示するレポート行(表示したファイル数とディレクトリを表示している行)が不要な場合は、「--noreport」オプションを指定します。

 画面4画面5では、表示内容が多くなったため、headコマンドで冒頭部分だけを表示しています。

コマンド実行例

tree -f ディレクトリ

(ファイルやディレクトリの名前をフルパスで表示)(画面4

tree -f -i ディレクトリ

(ツリー構造を表示しない)(画面5

tree -f -i --noreport ディレクトリ

(ツリー構造を表示せず、レポート表示もオフにする)


画面4 画面4 名前をフルパスで表示したところ
画面5 画面5 ツリー状に表示しないように指定をしたところ


HTML形式で出力する

 「-H URLの起点」で、HTML形式の出力ができます。

 HTML形式ではファイル名の部分が「<a href="〜">ファイル名</a>」という形式のリンクに置き換わります。このとき、hrefの次に来るパスの部分は、-Hオプションで指定したURLの起点とファイルのパスを組み合わせたものとなります。

 画面6では「-H .」と指定して「Docments/」内のファイルを表示しました。このように指定すると「Documents/myfile.txt」は「./myfile.txt」のように置き換えられます。

 「-H」を指定した場合も結果は画面に出力されるので、リダイレクトするか「-o ファイル名」で保存するとよいでしょう。

 画面6では、「-T FILES」でタイトルを「FILES」とし、「--charset=UTF-8」でツリーを表す線を滑らかにすると同時に、出力結果を「files.html」に保存しています。画面7では画面6の出力ファイルをFirefoxで表示しました。

コマンド実行例

tree -H . -T FILES --charset=UTF-8 Documents/

(Documents以下のファイルをHTML形式で出力)(画面6


画面6 画面6 HTML形式で出力したところ
画面7 画面7 HTML形式のファイルをFirefoxで表示したところ


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。