一行shell实现tree

一、命令详解

在不方便编译或安装tree命令时,可以使用以下的find命令来替代,语句如下:

find . -print | sort | sed 's;[^/]*/;|---;g;s;---|;|;g'

 

二、分析原理:

-print:默认选项,指定显示路径全名并换行,可不加该选项

sort:将上一步输出的路径名按照字典进行排序,更易查看

sed:将上面寻常的输出变得有层次,更易于查看;且支持正则表达式方式匹配,[^/]*匹配不含/的任意长度字符串,其实实现的效果就是将如./a/b/c形式的路径字符串中的所有被/分割的字符串进行匹配,如其中的.、a、b与c

[^/]*后再加1个/字符,则匹配上例中非最后一个被/分隔的字符串外的所有以/结尾的字串,也即除c外的所有上级目录,如./与a/;以|---|---cache为例,第一个|不会被替换,而其后的---|都将被简化为|,这一步与上一步的作用本质一样,对于含有上级目录的路径,保留文件名前的---,其余部门每含有一个上级目录,多一个|,以实现美化输出的结果

 

posted @   Mrwhite86  阅读(293)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示