有时候,当你完成一个项目后,想要展示这个项目的目录结构(如下图所示),对该项目进行文档描述性说明,用于解释其项目中各个目录以及文件代表的含义,这样便于自己和后来的同学理解
在实际开发中,对于接收毫无文档说明的project,是非常痛苦的,一份好的readme文档也是非常重要的,那怎么办?逐行手写?当然不是,接下来,一步一步带你见证奇迹
![图片[1]it资源网-免费资源网-视频教程-源码下载-源码交易-程序开发-小程序开发使用tree生成目录树结构it资源网-免费资源网-视频教程-源码下载-源码交易-程序开发-小程序开发IT资源网](https://static01.imgkr.com/temp/0be1c18c95bb484a8cdd4fee288b6f57.jpg)
使用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)如下图所示
![图片[2]it资源网-免费资源网-视频教程-源码下载-源码交易-程序开发-小程序开发使用tree生成目录树结构it资源网-免费资源网-视频教程-源码下载-源码交易-程序开发-小程序开发IT资源网](https://static01.imgkr.com/temp/c8179461a0c24f7cacebc58be273eaaa.jpg)
bin/
目录下的 tree.exe 复制到 git/usr/bin
目录中,如下图所示:![图片[3]it资源网-免费资源网-视频教程-源码下载-源码交易-程序开发-小程序开发使用tree生成目录树结构it资源网-免费资源网-视频教程-源码下载-源码交易-程序开发-小程序开发IT资源网](https://static01.imgkr.com/temp/eb1d7c6d04ea4082b40f49cbd36cf44b.jpg)
windows
下tree在git命令行工具下使用文档(http://mama.indstate.edu/users/ice/tree/
)以下是tree命令在git命令行中使用文档: 此用法只在git bash中是有效,在DOS终端下,使用
tree
命令仍然是系统的提供的用法,此tree非彼tree,是为了能在window下的git终端下也能够使用的一种方式,此方法提供了很多方法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格式
![图片[4]it资源网-免费资源网-视频教程-源码下载-源码交易-程序开发-小程序开发使用tree生成目录树结构it资源网-免费资源网-视频教程-源码下载-源码交易-程序开发-小程序开发IT资源网](https://static01.imgkr.com/temp/6c493eb36e774629bb30411b4198068b.jpg)
tree -C -L 3 -T "欢迎关注微信itclanCoder公众号" -H "http://mama.indstate.edu/users/ice/00Tree.html" -I "node_modules" --charset=gbk -o ooTree.html
对照上面的tree命令参数的含义,不难理解上面的命令的含义 用tree命令,生成的一个目录树结构:
(-C)始终打开彩色化, -L 3(向下深入3层级目录)
-T(用字符串替换默认的HTML标题和H1标题)
-I(忽略node_modules)
–charser=gbk(设置HTML输出编码格式,这里设置gbk,中文的话,就会是乱码的,一般都是utf-8)
-o(指定输出目录) 以上就是git版在tree使用命令的参数
具体使用,可以访问
http://mama.indstate.edu/users/ice/tree/
,此文档缺点:需要你去对下载tree.exe文件格式,并手动复制到
Git\usr\bin
目录下如果想要忽略某些文件,例如:
node_modules
或者其他文件,要知道 node_modules
一般是不要上传到代码仓库中去的,那怎么办?单纯windows这个tree命令就满足不了我们的需要,上面的方法也是可以解决了的下面介绍其他一种方式就是npm包管理工具,肯定是能找到的,此方法无论是DOS坏境下还是git终端下,都是可以使用的
暂无评论内容