Mac 生成目录树结构

Tree 的使用

Posted by 一之笔 on July 15, 2018

文章原创如需转载,请注明出处”本文首发于一之笔”;

前言

在整理自己的GitHub主页,发现文档目录结构不好写,自己也尝试敲出来,无奈,工程浩大,看着别人的目录树,感觉很好,比如下面的这种,有没有感觉很好看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|-- kibana
    |-- .bowerrc
    |-- .gitignore
    |-- .jshintrc
    |-- .travis.yml
    |-- CONTRIBUTING.md
    |-- FAQ.md
    |-- Gruntfile.js
    |-- LICENSE.md
    |-- README.md
    |-- STYLEGUIDE.md
    |-- bower.json
    |-- package.json
    |-- docs
    |   |-- access.asciidoc
    

这篇文章:Markdown语法:表示目录文件结构,方法汇总介绍了不同的工具,方法,我尝试了其中一种 ==mddir== 但是,不尽如我意,打算试试 tree

tree安装

brew install tree

没有 brew 自行安装,也很简单,如下

ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

1
2
3
4
5
6
7
8
安装完之后:

==> Downloading https://homebrew.bintray.com/bottles/tree-1.7.0.high_sierra.bottle.1
######################################################################## 100.0%
==> Pouring tree-1.7.0.high_sierra.bottle.1.tar.gz
🍺  /usr/local/Cellar/tree/1.7.0: 8 files, 114.3KB

使用方法

  • tree -a 显示 当前目录下,所有的文件结构,类似如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
├── .DS_Store
├── .git
│   ├── COMMIT_EDITMSG
│   ├── FETCH_HEAD
│   ├── HEAD
│   ├── ORIG_HEAD
│   ├── config
│   ├── description
│   ├── hooks
│   │   ├── applypatch-msg.sample
│   │   ├── commit-msg.sample
│   │   ├── post-update.sample
│   │   ├── pre-applypatch.sample
│   │   ├── pre-commit.sample
│   │   ├── pre-push.sample
│   │   ├── pre-rebase.sample
│   │   ├── pre-receive.sample
│   │   ├── prepare-commit-msg.sample
│   │   └── update.sample
│   ├── index

  • tree -d 只显示文件夹
  • tree -L n 显示项目的层级。n表示层级数。比如想要显示项目二层结构,可以用tree -L 2,这个 L 参数是大写

对汉字支持不是很有好

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.
├── Category
│   ├── Map格�\217�\214\226
│   ├── UIBarButtonItem�\210\206类
│   ├── UIColor�\232\204�\210\206类
│   ├── UIGesture�\210\206类
│   ├── UIImage�\232\204�\210\206类
│   ├── UIViewFrame
│   ├── �\227��\234\237�\210��\226�
│   └── 计�\227�\226\207件�\200�大�\217
├── Macros
│   └── Single.h
├── README.md
└── Utils
    ├── DateManger
    ├── RSA+3DES
    ├── �\230�止�\225��\204,�\227符串崩�\203crashLib
    ├── 访�\227�系�\237�\233��\206\214
    └── �\216��\210��\217��\211�\214\226�\217\222件ConsoleCheseInput

  • tree -I pattern 用于过滤不想要显示的文件或者文件夹。比如你想要过滤项目中的README,可以使用tree -I “README”;

举个例子:

如果我们要显示某个项目下2层的所有文件结构,同时又过滤README,最后输出到 md 文件,可以这么写

tree -L 2 -I “README”

输出如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.
├── Category
│   ├── Map格�\217�\214\226
│   ├── UIBarButtonItem�\210\206类
│   ├── UIColor�\232\204�\210\206类
│   ├── UIGesture�\210\206类
│   ├── UIImage�\232\204�\210\206类
│   ├── UIViewFrame
│   ├── �\227��\234\237�\210��\226�
│   └── 计�\227�\226\207件�\200�大�\217
├── Macros
│   └── Single.h
├── README.md
└── Utils
    ├── DateManger
    ├── RSA+3DES
    ├── �\230�止�\225��\204,�\227符串崩�\203crashLib
    ├── 访�\227�系�\237�\233��\206\214
    └── �\216��\210��\217��\211�\214\226�\217\222件ConsoleCheseInput

更多帮助查看 tree -help

1
2
3
4
5
6
7
lucy@lucydeMacBook-Pro:~/Desktop/个人本博客/LX_Extend$ tree -help
tree: Invalid argument -`e'.
usage: tree [-acdfghilnpqrstuvxACDFJQNSUX] [-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>]
[--sort[=]<name>] [--matchdirs] [--ignore-case] [--] [<directory list>]

☛兄dei,请我喝杯茶☚
%