掘金 后端 ( ) • 2024-04-27 09:43

theme: channing-cyan

昨天在写文章的时候,需要展示项目的目录结构,所以就去搜索了一下相关的方法,发现了几个不同的方式,编写此篇文章记录一下,给日常需要写文档的朋友参考。

├─cloud-cli-service
|         ├─pom.xml
|         ├─target
|         |   ├─generated-sources
|         |   |         ├─annotations
|         |   ├─classes
|         |   |    ├─org
|         |   |    |  ├─nott
|         |   |    |  |  ├─cli
|         |   |    |  |  |  ├─service
|         |   |    |  |  |  |    ├─IUsersService.class
|         |   |    |  |  |  |    ├─mapper
|         |   |    |  |  |  |    |   ├─CommonMapper.class
|         |   |    |  |  |  |    |   └UsersMapper.class
|         |   |    |  |  |  |    ├─impl
|         |   |    |  |  |  |    |  └UsersServiceImpl.class
|         |   |    ├─mapper
|         |   |    |   ├─CommonMapper.xml
|         |   |    |   └UsersMapper.xml

需要输出的目录

Tree命令

Linux

以Centos服务器为例

安装

$ yum install -y tree

...Total download size: 46 k
Installed size: 87 k
Downloading packages:
tree-1.6.0-10.el7.x86_64.rpm                                                        |  46 kB  00:00:00     
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 --help

usage: tree [-acdfghilnpqrstuvxACDFQNSUX] [-H baseHREF] [-T title ] [-L level [-R]]
	[-P pattern] [-I pattern] [-o filename] [--version] [--help] [--inodes]
	[--device] [--noreport] [--nolinks] [--dirsfirst] [--charset charset]
	[--filelimit[=]#] [--si] [--timefmt[=]<f>] [<directory list>]

参数说明

  • -a 显示所有文件和目录。
  • -A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
  • -C 在文件和目录清单加上色彩,便于区分各种类型。
  • -d 显示目录名称而非内容。
  • -D 列出文件或目录的更改时间。
  • -f 在每个文件或目录之前,显示完整的相对路径名称。
  • -F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
  • -g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
  • -i 不以阶梯状列出文件或目录名称。
  • -L level 限制目录显示层级。
  • -l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
  • -n 不在文件和目录清单加上色彩。
  • -N 直接列出文件和目录名称,包括控制字符。
  • -p 列出权限标示。
  • -P<范本样式> 只显示符合范本样式的文件或目录名称。
  • -q 用"?"号取代控制字符,列出文件和目录名称。
  • -s 列出文件或目录大小。
  • -t 用文件和目录的更改时间排序。
  • -u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
  • -x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。

案例

$ tree -F cloud-cli-service
cloud-cli-service
├── pom.xml
└── src/
    └── main/
        ├── java/
        │   └── org/
        │       └── nott/
        │           └── cli/
        │               └── service/
        │                   ├── impl/
        │                   │   └── UsersServiceImpl.java
        │                   ├── IUsersService.java
        │                   └── mapper/
        │                       ├── CommonMapper.java
        │                       └── UsersMapper.java
        └── resources/
            └── mapper/
                ├── CommonMapper.xml
                └── UsersMapper.xml

11 directories, 7 files

Windows

  1. 使用 Windows自带的tree命令,在cmd命令窗口输入help tree查看帮助。
$ help tree
以图形显示驱动器或路径的文件夹结构。

TREE [drive:][path] [/F] [/A]

   /F   显示每个文件夹中文件的名称。
   /A   使用 ASCII 字符,而不使用扩展字符。

进入目录,输入tree /f cloud-cli-service,输出如下。

$ tree /f cloud-cli-service
卷 文档 的文件夹 PATH 列表
卷序列号为 xxxxx3D xA70:xF7E
drived:\path\CLOUD-CLI-SERVICE
│  pom.xml
│
└─src
    └─main
        ├─java
        │  └─org
        │      └─nott
        │          └─cli
        │              └─service
        │                  │  IUsersService.java
        │                  │
        │                  ├─impl
        │                  │      UsersServiceImpl.java
        │                  │
        │                  └─mapper
        │                          CommonMapper.java
        │                          UsersMapper.java
        │
        └─resources
            └─mapper
                    CommonMapper.xml
                    UsersMapper.xml
  1. Git Bash的tree命令,需要额外安装,直接使用:tree: command not found

https://gnuwin32.sourceforge.net/packages/tree.htm 下载二进制文件

image.png 进入下载好的bin目录复制tree.exe文件到你安装git的usr/bin目录下

image.png

输入tree --help查看帮助

image.png

输入tree cloud-cli-service 测试

$ tree cloud-cli-service/
cloud-cli-service/
|-- pom.xml
|-- src
|   |-- main
|   |   |-- java
|   |   |   `-- org
|   |   |       `-- nott
|   |   |           `-- cli
|   |   |               `-- service
|   |   |                   |-- IUsersService.java
|   |   |                   |-- impl
|   |   |                   |   `-- UsersServiceImpl.java
|   |   |                   `-- mapper
|   |   |                       |-- CommonMapper.java
|   |   |                       `-- UsersMapper.java
|   |   `-- resources
|   |       `-- mapper
|   |           |-- CommonMapper.xml
|   |           `-- UsersMapper.xml
|   `-- test
|       `-- java
`-- target
    |-- classes
    |   |-- mapper
    |   |   |-- CommonMapper.xml
    |   |   `-- UsersMapper.xml
    |   `-- org
    |       `-- nott
    |           `-- cli
    |               `-- service
    |                   |-- IUsersService.class
    |                   |-- impl
    |                   |   `-- UsersServiceImpl.class
    |                   `-- mapper
    |                       |-- CommonMapper.class
    |                       `-- UsersMapper.class
    `-- generated-sources
        `-- annotations

macOS

因为没有macOS系统,因此可参照网上的方法,地址: https://segmentfault.com/a/1190000039977971

使用npm包的方式

treer

npm地址:https://www.npmjs.com/package/treer

安装

$ npm -g treer

使用t

$ treer --help

  Usage: treer [options]

  Options:

    -h, --help             帮助信息
    -V, --version          查看版本
    -d, --directory [dir]  指定文件地址
    -i, --ignore [ig]      忽略文件名称
    -e, --export [epath]   结果输出到指定文件

案例

$ treer -e ./result.txt -i .git

# result.txt内容
├─.gitignore
├─pom.xml
├─README.md
├─result.txt
├─cloud-cli-service
|         ├─pom.xml
|         ├─src
|         |  ├─main
|         |  |  ├─resources
|         |  |  |     ├─mapper
|         |  |  |     |   ├─CommonMapper.xml
|         |  |  |     |   └UsersMapper.xml
|         |  |  ├─java
|         |  |  |  ├─org
|         |  |  |  |  ├─nott
|         |  |  |  |  |  ├─cli
|         |  |  |  |  |  |  ├─service
|         |  |  |  |  |  |  |    ├─IUsersService.java
|         |  |  |  |  |  |  |    ├─mapper
|         |  |  |  |  |  |  |    |   ├─CommonMapper.java
|         |  |  |  |  |  |  |    |   └UsersMapper.java
|         |  |  |  |  |  |  |    ├─impl
|         |  |  |  |  |  |  |    |  └UsersServiceImpl.java

mddir

npm地址:https://www.npmjs.com/package/mddir

安装

$ npm -g mddir

使用

# 进入目录后
$ mddir

案例

$ mddir

# directoryList.md内容
|-- undefined
    |-- .gitignore
    |-- pom.xml
    |-- README.md
    |-- result.txt
    |-- cloud-cli-service
    |   |-- pom.xml
    |   |-- src
    |       |-- main
    |           |-- java
    |           |   |-- org
    |           |       |-- nott
    |           |           |-- cli
    |           |               |-- service
    |           |                   |-- IUsersService.java
    |           |                   |-- impl
    |           |                   |   |-- UsersServiceImpl.java
    |           |                   |-- mapper
    |           |                       |-- CommonMapper.java
    |           |                       |-- UsersMapper.java
    |           |-- resources
    |               |-- mapper
    |                   |-- CommonMapper.xml
    |                   |-- UsersMapper.xml