ディレクトリツリーを確認したい時、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