很多朋友在写文档或者整理目录结构的时候,可能都会使用到一个树状目录,之前我一直在想,这玩意要是自己一点点写,一点点整理,那得有多累啊,现在看来是自己知识面是多么的狭窄。
一个自己在 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
里面还有可以通过正则去筛选显示某些文件,这个没使用过,感觉暂时性意义不大,以后有需要再看了。具体怎么样,好不好用,这个就是萝卜青菜各有所爱了,毕竟这个命令对于我而言其实使用率也并不高,但真用了,还是很方便的。