将目录和文件系统以图形化的树状层次结构描述会使其更为形象。这种形式也被一些监控脚本用来更清晰易懂地呈现文件系统。

3.17.1 预备知识

tree命令能够以图形化的树状结构打印文件和目录。Linux发行版中通常不包含这个命令。你需要用包管理器自行安装。

3.17.2 实战演练

下面是树状Unix文件系统的一个示例:

  1. $ pwd
  2. /root/workspace
  3. $ tree .
  4. .
  5. ├── echo
  6. ├── else
  7. ...
  8. 633 directories, 5820 files
  1. [root@dev workspace]# pwd
  2. /root/workspace
  3. [root@dev workspace]# tree .
  4. .
  5. ├── echo
  6. ├── else
  7. ...
  8. 633 directories, 5820 files

tree命令支持多种选项:

  • -P选项可以只显示出匹配指定模式的文件:
    1. $ tree path -P PATTERN #使用通配符描述模式并将其放入单引号中
    例如:
    1. $ tree . -P '*.sh' #使用目录路径替换PATH
    2. .
    3. ...
    4. ├── variables.sh
    5. └── vitest
    6. └── test.sh
    7. 633 directories, 1170 files
    ```powershell [root@dev workspace]# tree . -P ‘*.sh’ . … ├── variables.sh └── vitest └── test.sh

633 directories, 1170 files

  1. - `-I`选项可以只显示出不匹配指定模式的文件:
  2. ```powershell
  3. $ tree path -I PATTERN
  1. [root@dev workspace]# tree . -I '*.sh' #除.sh后缀的文件
  2. .
  3. ├── echo
  4. ├── else
  5. ...
  6. ├── vitest
  7. ├── host.txt
  8. └── man_db.conf
  9. └── welcome.txt
  • -h选项可以同时打印出文件和目录的大小:
    1. $ tree -h
    ```powershell [root@dev workspace]# tree . -h . ├── [ 0] echo ├── [ 0] else … ├── [ 90] variables.sh ├── [ 4.0K] vitest │ ├── [ 453] host.txt │ ├── [ 5.0K] man_db.conf │ └── [ 11] test.sh └── [ 30] welcome.txt

633 directories, 5820 files

  1. <a name="sqjxd"></a>
  2. ## 3.17.3 补充内容
  3. `tree`命令还可以在终端中生成`HTML`输出。
  4. **生成HTML形式的目录树**
  5. 用下面的命令可以生成一个包含目录树输出的 **HTML **文件:
  6. ```bash
  7. $ tree PATH -H http://localhost -o out.html

http://localhost 替换为适合存放输出文件的URL。将PATH替换为主目录的真实路径。当前目录可以用.作为PATH

根据目录列表生成的Web页面如图3-1所示。
image.png

  1. [root@dev workspace]# tree . -H http://localhost -o out.html

image.png
image.png