有时候,当你完成一个项目后,想要展示这个项目的目录结构(如下图所示),对该项目进行文档描述性说明,用于解释其项目中各个目录以及文件代表的含义,这样便于自己和后来的同学理解
在实际开发中,对于接收毫无文档说明的project,是非常痛苦的,一份好的readme文档也是非常重要的,那怎么办?逐行手写?当然不是,接下来,一步一步带你见证奇迹
使用DOS中的tree命令
人用迭代,神用递归,其实说的是自己调用自己,而这个tree命令就是用递归写的
tree是DOS的一个命令
功能:以图形的方式现实应用程序或者路径的目录结构
对于tree命令在windows坏境下的使用的,执行 help
命令,然后 tree /?
,其他windows的dos命令也是如此
官方解释:Tree是一个递归目录列表程序,它生成一个深度缩进的文件列表。给出目录参数时,树会列出给定目录中找到的所有文件和/或目录
缺陷:在windows DOS终端下,tree对应的参数功能有限,无法过滤特定的文件,而且在git bash终端下此命令却无法使用,如果要使用,特用特定的方法,后文中提供了具体的解决方法 tree命令使用
1. D:\公开课\2019\react\myfirstreactapp>tree /?
2. 以图形显示驱动器或路径的文件夹结构。
4. TREE [drive:][path] [/F] [/A]
6. /F 显示每个文件夹中文件的名称。
7. /A 使用 ASCII 字符,而不使用扩展字符(会把当前目录下的结构给展出来)。
8. TREE [drive:][path] [/F] [/A]
当你在当前目录下使用 tree /F
或者 tree /a
这两个命令时,你会发现,它会把所有文件目录结构都给你打印出来 使用 tree /f
,如下所示
│ │ README.md
│ │
│ ├─regexpu-core
│ │ │ LICENSE-MIT.txt
│ │ │ package.json
│ │ │ README.md
│ │ │ rewrite-pattern.js
│ │ │
│ │ └─data
│ │ character-class-escape-sets.js
│ │ iu-mappings.js
│ │
│ ├─regjsgen
│ │ LICENSE
│ │ package.json
│ │ README.md
│ │ regjsgen.js
│ │
│ ├─regjsparser
│ │ │ CHANGELOG
│ │ │ LICENSE.BSD
│ │ │ package.json
│ │ │ parser.js
│ │ │ README.md
│ │ │
│ │ ├─bin
│ │ │ parser
│ │ │
│ │ └─node_modules
│ │ ├─.bin
│ │ │ jsesc
│ │ │ jsesc.cmd
│ │ │
│ │ └─jsesc
│ │ │ jsesc.js
│ │ │ LICENSE-MIT.txt
│ │ │ package.json
│ │ │ README.md
│ │ │
│ │ ├─bin
│ │ │ jsesc
│ │ │
│ │ └─man
│ │ jsesc.1
│ │
使用 tree /a
,如下所示
D:\公开课\2019\react\myfirstreactapp>tree /A
卷 Data 的文件夹 PATH 列表
卷序列号为 5A50-E210
D:.
+---node_modules
| +---.bin
| +---@babel
| | +---code-frame
| | | \---lib
| | +---core
| | | +---lib
| | | | +---config
| | | | | +---files
| | | | | +---helpers
| | | | | \---validation
| | | | +---tools
| | | | \---transformation
| | | | +---file
| | | | \---util
| | | \---node_modules
| | | +---.bin
| | | \---semver
| | | \---bin
如果你此时想要把目录结构保存到一个文件里,可以用如下方式
tree /f > 指定输出的文件(一般为txt格式或者readme文档)
tree /f
> 指定输出的文件(一般为txt格式或者readme文档)
tree /f > list.txt
要知道,程序员哥哥是很懒的,个人强烈推荐使用命令行方式去自动化操作
注意: tree
命令是Windows下的一个命令,在linux下或者git命令行工具里,却无法使用,不支持tree,然而如果想要支持怎么办?
下载tree,Binaries版本(http://gnuwin32.sourceforge.net/packages/tree.htm)如下图所示
itclancode@LAPTOP-1CS413BU MINGW64 /d/公开课/2019/react/myfirstreactapp
$ 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 All files are listed(列出所有文件).
-d List directories only(只列出目录).
-l Follow symbolic links like directories.(遵循象目录这样的符号链接)
-f Print the full path prefix for each file(打印每个文件的完整路径前缀).
-i Don't print indentation lines()不要打印压痕线.
-q Print non-printable characters as '?'.(将不可打印字符打印为'?'。)
-N Print non-printable characters as is.(按原样打印不可打印字符)
-p Print the protections for each file.(打印每个文件的保护)
-u Displays file owner or UID number(显示文件所有者或UID号).
-g Displays file group owner or GID number.(显示文件组所有者或GID编号)
-s Print the size in bytes of each file.(打印每个文件的字节大小)
-h Print the size in a more human readable way.(以更容易被人阅读的方式打印尺寸)
-D Print the date of last modification.(打印上次修改的日期)
-F Appends '/', '=', '*', or '|' as per ls -F.(根据ls -F添加'/'、'='、'*'或'|'。)
-v Sort files alphanumerically by version.(按版本对文件进行字母数字排序)
-r Sort files in reverse alphanumeric order.(按字母数字倒序排列文件。)
-t Sort files by last modification time.(按上次修改时间排序文件)
-x Stay on current filesystem only.(只保留当前文件系统)
-L level Descend only level directories deep.(只向下深入到级别目录)
-A Print ANSI lines graphic indentation lines.(打印ANSI线图形压痕线)
-S Print with ASCII graphics indentation lines.(用ASCII图形缩进行打印)
-n Turn colorization off always (-C overrides).(始终关闭着色(-C覆盖))
-C Turn colorization on always.(始终打开彩色化)
-P pattern List only those files that match the pattern given.(只列出与给定模式匹配的文件)
-I pattern Do not list files that match the given pattern.(不要列出与给定模式匹配的文件)
-H baseHREF Prints out HTML format with baseHREF as top directory.(打印出以baseHREF作为顶部目录的HTML格式)
-T string Replace the default HTML title and H1 header with string.(用字符串替换默认的HTML标题和H1标题)
-R Rerun tree when max dir level reached.(当达到最大dir级别时重新运行树)
-o file Output to file instead of stdout.(输出到文件而不是stdout。)
--inodes Print inode number of each file.(打印每个文件的inode编号)
--device Print device ID number to which each file belongs.(打印每个文件所属的设备ID号)
--noreport Turn off file/directory count at end of tree listing.(在树列表末尾关闭文件/目录计数)
--nolinks Turn off hyperlinks in HTML output(关闭HTML输出中的超链接).
--dirsfirst List directories before files.(在文件之前列出目录)
--charset X Use charset X for HTML and indentation line output.(使用charset X作为HTML和缩进行输出)
--filelimit # Do not descend dirs with more than # files in them.(不要下载包含超过#文件的dirs)
例如:你想要生成下图的HTML格式