一行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 @ 2022-11-28 22:35  Mrwhite86  阅读(274)  评论(0编辑  收藏  举报