方便好用的 tree

3,491 阅读4分钟
原文链接: mp.weixin.qq.com

很多朋友在写文档或者整理目录结构的时候,可能都会使用到一个树状目录,之前我一直在想,这玩意要是自己一点点写,一点点整理,那得有多累啊,现在看来是自己知识面是多么的狭窄。

一个自己在 github 中的写了一点 CSS 小技巧的目录结构,很久没更新了

就好比上面这个简单的目录结构,现在只要进入到这个目录中,然后输入:tree . 就可以搞定了。

是的,这次主要是想记录一下这个 tree 命令。

安装

在 windows 中,不知道是哪个版本开始,反正我记得之前用 win7 的时候就有了,自带了一个 tree 命令,不过好像功能比较简单。而在 Mac 中的话,需要通过 brew 包管理来安装。

brew install tree

那啥,安装的时候可能会比较慢,主要还是因为网络的关系,这个大家都懂。不过据说可以更换 brew 资源路径,但对于不是经常在这个上面去找安装包的话,就可以不要考虑了,反正我是觉得累。

使用

安装了 tree 之后,那么可以看一下帮助。

tree --help

会得到很多可用的参数,个人觉得比较好用的大概是这么几个。

遍历显示层级

如果目录层级很深,但又不想全部显示的话,就可以通过 -L 数字 的方式来操作,比如:显示第一层目录结构。

tree -L 1

显示文件夹

tree -d

输出指定格式

正常一般的情况下,通过 tree 输出的格式都是上面截图中的效果,不过我们可以指定输出一些格式,这个在通过 tree --help 的时候可以看到。

这样的话,对于有时候做静态页面的站点地图,或者想导出一个 json 格式的时候就十分方便了。

比如希望输出的路径是在 http://lab.tianyizone.com/ 域名下的,那么只要输入:

tree -H http://lab.tianyizone.com/

就会得到:

不仅把路径什么的都加上了,还自带了样式。当然了,这些样式什么的后期可以自己处理一下。如果觉得前面的那些树状的字符让你不舒服,那么可以多加一个参数 i 去掉。

tree -iH http://lab.tianyizone.com/

不过现在用 HTML 格式的应该比较少了,大部分都是用 json 格式了,所以,我们可以这样操作。

tree -J

是不是感觉很方便快捷呢?如果你不这么觉得,我也没办法了,可能没有这个需求吧。我个人是在处理某个小需求的时候,用这个方式让我得到很大的满足感,从效率上来说也提高了很多。

输出到文件

现在这些操作,都是在终端显示的,对于我们真的有需要的话,就不太会在终端里显示了,然后再去选择后复制,最后再到某个编辑器中黏贴,这太麻烦了。就算要做黏贴的操作,我们也至少可以这样:

tree -J | pbcopy

这样至少能直接进入到剪贴板了。

可这样的话,还是觉得不爽。那么可以通过 -o 参数来满足我们。

tree -o tree.md

这样我们就可以在当前目录下看到新增的一个 md 文件了。

看一下这个 tree.md 里的内容:

如果不喜欢这样的命令方式,那么可以用:

tree -J >> tree_json.js

这样的话也是可以满足我们的需求的哦。

然后查看一下

通过 >> 这个其实是追加内容到某个文件中,如果用 > 这个的话,就会把新的内容覆盖之前的内容了。

tree -H http://lab.tianyizone.com/ > tree_json.js

这样的话,就可以看到之前的 json 格式的内容没有了。然后再

tree -J >> tree_json.js

这样来一次的话,json 格式的内容就会跑到这个 HTML 格式的后面去了。

最后

大概的使用方式就是这样了,在 tree 里面还有可以通过正则去筛选显示某些文件,这个没使用过,感觉暂时性意义不大,以后有需要再看了。具体怎么样,好不好用,这个就是萝卜青菜各有所爱了,毕竟这个命令对于我而言其实使用率也并不高,但真用了,还是很方便的。