# MacOS如何使用 tree 生成目录结构

# Homebrew安装

homebrew官网

Homebrew介绍和使用

根据官网的方法安装

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

比如我的:

==> This script will install:
/usr/local/bin/brew
/usr/local/share/doc/homebrew
/usr/local/share/man/man1/brew.1
/usr/local/share/zsh/site-functions/_brew
/usr/local/etc/bash_completion.d/brew
/usr/local/Homebrew

Press RETURN to continue or any other key to abort

一路按照提示操作即可,不出意外的话,就安装成功了:

➜  ~ brew -v
Homebrew 2.1.9
Homebrew/homebrew-core (git revision c8ff; last commit 2019-08-01)
Homebrew/homebrew-cask (git revision 04bff; last commit 2019-08-02)

# Tree 安装

brew install tree

常用命令:

# 下载
brew install tree

# 显示某个文件夹下的所有文件
tree -a

# 只显示文件夹
tree -d

# 显示项目的层级,如三级
tree -L 3  

# 过滤,如除node_modules文件
tree -I "node_modules"

# 输出
tree > tree.md

# Help
tree --help

最后,我的输出:tree -I "node_modules" > tree.md 查看 tree.md 的内容如下:

.
├── README.md
├── dist
├── package.json
├── src
│   ├── app.scss
│   ├── font-awesome
│   │   ├── fonts
│   │   │   ├── FontAwesome.otf
│   │   │   ├── fontawesome-webfont.eot
│   │   │   ├── fontawesome-webfont.svg
│   │   │   ├── fontawesome-webfont.ttf
│   │   │   ├── fontawesome-webfont.woff
│   │   │   └── fontawesome-webfont.woff2
│   │   └── scss
│   │       ├── _animated.scss
│   │       ├── _bordered-pulled.scss
│   │       ├── _core.scss
│   │       ├── _fixed-width.scss
│   │       ├── _icons.scss
│   │       ├── _larger.scss
│   │       ├── _list.scss
│   │       ├── _mixins.scss
│   │       ├── _path.scss
│   │       ├── _rotated-flipped.scss
│   │       ├── _screen-reader.scss
│   │       ├── _stacked.scss
│   │       ├── _variables.scss
│   │       └── font-awesome.scss
│   ├── index.html
│   ├── index.js
│   ├── index.jsx
│   ├── react.png
│   └── style.css
├── tree.md
├── webpack.config.js
└── yarn.lock

5 directories, 31 files

# tree命令行参数

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

# 参考资料

Last Updated: 5/22/2020, 5:01:49 PM