PR

Linux ディレクトリ階層を確認できるtreeコマンドの使い方

スポンサーリンク
Linux

ディレクトリツリーを確認したい時、Linuxではtreeコマンドが用意されています。

treeコマンドはWindowsのコマンドプロンプトでも使えます。

treeコマンドのインストール方法

treeコマンドがない場合は、yumコマンドでtreeをインストールします。

LinuxではOSに標準で含まれているので、RPMリポジトリでもインストールDVDからでもインストール出来ます。

[root@cent76 ~]# yum install tree
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * c7-media:
Resolving Dependencies
--> Running transaction check
---> Package tree.x86_64 0:1.6.0-10.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================================
 Package                 Arch                      Version                            Repository                   Size
========================================================================================================================
Installing:
 tree                    x86_64                    1.6.0-10.el7                       c7-media                     46 k

Transaction Summary
========================================================================================================================
Install  1 Package

Total download size: 46 k
Installed size: 87 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : tree-1.6.0-10.el7.x86_64                                                                             1/1
  Verifying  : tree-1.6.0-10.el7.x86_64                                                                             1/1

Installed:
  tree.x86_64 0:1.6.0-10.el7

Complete!

treeコマンドの使い方

テキトーにディレクトリとファイルを作ってみます。

[root@cent76 ~]# mkdir -p /data/data01/test01
[root@cent76 ~]# mkdir -p /data/data01/test02
[root@cent76 ~]# mkdir -p /data/data02/test01
[root@cent76 ~]# mkdir -p /data/data02/test02
[root@cent76 ~]# mkdir -p /data/data03/test01
[root@cent76 ~]# mkdir -p /data/data03/test02
[root@cent76 ~]# touch /data/data01/test01/fileA
[root@cent76 ~]# touch /data/data01/test01/fileB
[root@cent76 ~]# touch /data/data01/test02/fileA
[root@cent76 ~]# touch /data/data01/test02/fileB
[root@cent76 ~]# touch /data/data02/test01/fileA
[root@cent76 ~]# touch /data/data02/test01/fileB
[root@cent76 ~]# touch /data/data02/test02/fileA
[root@cent76 ~]# touch /data/data02/test02/fileB
[root@cent76 ~]# touch /data/data03/test01/fileA
[root@cent76 ~]# touch /data/data03/test01/fileB
[root@cent76 ~]# touch /data/data03/test02/fileA
[root@cent76 ~]# touch /data/data03/test02/fileB

treeコマンドで親ディレクトリを指定すると以下のように表示されます。

[root@cent76 ~]# tree /data/
/data/
|-- data01
|   |-- test01
|   |   |-- fileA
|   |   `-- fileB
|   `-- test02
|       |-- fileA
|       `-- fileB
|-- data02
|   |-- test01
|   |   |-- fileA
|   |   `-- fileB
|   `-- test02
|       |-- fileA
|       `-- fileB
`-- data03
    |-- test01
    |   |-- fileA
    |   `-- fileB
    `-- test02
        |-- fileA
        `-- fileB

9 directories, 12 files

オプション -f を付けると、全てのディレクトリとファイルがフルパスで表示されます。

[root@cent76 ~]# tree -f /data/
/data
|-- /data/data01
|   |-- /data/data01/test01
|   |   |-- /data/data01/test01/fileA
|   |   `-- /data/data01/test01/fileB
|   `-- /data/data01/test02
|       |-- /data/data01/test02/fileA
|       `-- /data/data01/test02/fileB
|-- /data/data02
|   |-- /data/data02/test01
|   |   |-- /data/data02/test01/fileA
|   |   `-- /data/data02/test01/fileB
|   `-- /data/data02/test02
|       |-- /data/data02/test02/fileA
|       `-- /data/data02/test02/fileB
`-- /data/data03
    |-- /data/data03/test01
    |   |-- /data/data03/test01/fileA
    |   `-- /data/data03/test01/fileB
    `-- /data/data03/test02
        |-- /data/data03/test02/fileA
        `-- /data/data03/test02/fileB

9 directories, 12 files

オプション -d を付けると、ディレクトリのみを表示します。

[root@cent76 ~]# tree -d /data/
/data/
|-- data01
|   |-- test01
|   `-- test02
|-- data02
|   |-- test01
|   `-- test02
`-- data03
    |-- test01
    `-- test02

9 directories

オプション -L を付けると、表示する階層の深さを指定できます。

[root@cent76 ~]# tree -L 1 /data/
/data/
|-- data01
|-- data02
`-- data03

3 directories, 0 files

オプション -P を付けると、パターンにマッチしたものだけを表示します。ワイルドカードも使えます。

[root@cent76 ~]# tree -P '*fileB*' /data
/data
|-- data01
|   |-- test01
|   |   `-- fileB
|   `-- test02
|       `-- fileB
|-- data02
|   |-- test01
|   |   `-- fileB
|   `-- test02
|       `-- fileB
`-- data03
    |-- test01
    |   `-- fileB
    `-- test02
        `-- fileB

9 directories, 6 files

treeコマンドの結果が文字化けする場合

以下のようにtreeコマンドが文字化けしてしまう場合は、 –charset=C のオプションを付けてください。

[root@cent76 ~]# tree /data/
/data/
tqq data01
x?? tqq test01
x?? x?? tqq fileA
x?? x?? mqq fileB
x?? mqq test02
x??     tqq fileA
x??     mqq fileB
tqq data02
x?? tqq test01
x?? x?? tqq fileA
x?? x?? mqq fileB
x?? mqq test02
x??     tqq fileA
x??     mqq fileB
mqq data03
    tqq test01
    x?? tqq fileA
    x?? mqq fileB
    mqq test02
        tqq fileA
        mqq fileB

9 directories, 12 files
[root@cent76 ~]# tree --charset=C /data
/data
|-- data01
|   |-- test01
|   |   |-- fileA
|   |   `-- fileB
|   `-- test02
|       |-- fileA
|       `-- fileB
|-- data02
|   |-- test01
|   |   |-- fileA
|   |   `-- fileB
|   `-- test02
|       |-- fileA
|       `-- fileB
`-- data03
    |-- test01
    |   |-- fileA
    |   `-- fileB
    `-- test02
        |-- fileA
        `-- fileB

9 directories, 12 files