在我们编写项目的 README 时,项目的目录结构层级太多,手打项目的目录树太麻烦时怎么办。
此时可以使用Windows tree命令生成目录树。
一、Windows tree
Windows系统内置有 tree 命令,可在 CMD 或 PowerShell 中输入 help tree 或 tree/? 查看指令帮助。
-
tree:直接显示 CMD 当前路径下的所有文件夹 -
tree D:\CodeBase\tree:显示 指定路径下的目录树 -
tree/F: 显示 CMD 当前路径下的所有文件夹和文件 -
tree/A: 目录树不使用非 ASCII 字符 -
tree/A /F:使用 ASCII 字符显示带文件的目录树
当遇到目录层级过多,CMD 无法完整显示时,可以在命令行语句尾部添加 > <driveletter>:\<filepath>\filename.txt。来将目录树打印到指定驱动器的对应目录的相应文件内。
例如:
tree/F>tree.txt
Microsoft 官方提供的 tree 指令的可选项较少。可以使用 Linux 下的 tree 包,来丰富打印目录树的功能。
二、Linux tree
Linux 下有自己的 tree 指令,Unix/Linux 系统可直接通过指令安装。
Windows 用户需要使用 Tree for Windows 工具,来获取到近似的使用体验。
Tree for Windows 工具已经很久未更新,实测 Win10 已无法使用可执行文件进行安装,只能使用二进制文件。
1. Git-Bash下使用tree命令工具
- 打开进入 Tree for Windows 页面,选择下载
Binaries .zip文件 - 解压压缩包,找到压缩包内的
bin目录,将bin目录下的tree.exe复制 - 找到
D:\Git\usr\bin目录(根据每个人Git安装路径不同,有所区别),将tree.exe粘贴到该目录下,安装即完成
2.Windows 全局使用tree命令工具
上述方法只能在 git bash 里面用,如果在其他文件夹想快速使用就很麻烦。下面介绍全局使用 tree for windows 的方法。
- 复制 Git-Bash 一节中获取到的
tree.exe到任意一个文件夹中 - 将该文件夹添加到系统环境变量中
- 打开一个 CMD 或 PowerShell,若想用 Windows 原生 tree,就直接输入
tree [],若想用自定义的 tree,就输入tree.exe []
该工具毕竟很久未更新过,实测在 CMD 中直接使用部分指令下会有显示兼容问题。
Linux tree 命令行支持以下参数:
$ tree --help
usage: tree [-adfghilnpqrstuvxACDFNS] [-H baseHREF] [-T title ] [-L level [-R]]
[-P pattern] [-I pattern] [-o filename] [--version] [--help] [--inodes]
[--device] [--noreport] [--nolinks] [--dirsfirst] [--charset charset]
[--filelimit #] [<directory list>]
-a 列出所有文件
-d 只列出目录
-l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录
-f 在每个文件或目录之前,显示完整的相对路径名称
-i 不以阶梯状列出文件或目录名称
-q 用”?"号取代控制字符,列出文件和目录名称
-N 直接列出文件和目录名称,包括控制字符
-p 列出权限标示
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码
-s 列出文件或目录大小
-h 以更易于阅读的方式打印文件大小
-D 打印文件最后修改日期
-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|“号
-v 按版本排序文件
-r 按倒序排序文件
-t 按最后修改时间排序文件
-x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外
-L level 目录展示至第level级
-A 缩进线以ANSI图形打印
-S 缩进线以ASCII图形打印
-n 关闭着色(-C 覆盖).
-C 关闭着色
-P pattern 只列出符合规则的文件
-I pattern 列出除了指定规则之外的文件
-H baseHREF 打印baseHREF做为顶级目录的HTML格式
-T string 用参数字符串替代默认的HTML标题和H1标题
-R 当达到最大目录级别时重新运行树
-o file 将打印内容输出至一个文件存储
--inodes 打印每个文件的inode编号
--device 打印每个文件所属的设备ID号
--noreport 关闭树列表末尾的文件/目录计数
--nolinks 关闭HTML输出中的超链接
--dirsfirst 先列出目录,再列出文件
--charset X 使用 X 字符集输出 HTML 和缩进行
--filelimit # 文件夹内文件数超过 # 个的目录就不列出该文件夹。
详细可选项区别可参考该教程:强大的命令行工具:tree