如何生成一个Unix文件层次结构的ASCII表示?

所有。 我正在寻找一种快速和肮脏的方式来生成一些几乎但不完全相同的目录的图表,所以我可以在会议中向他们展示,我们可以决定我们最喜欢哪种风味。 我对“叶子”节点不感兴趣,只是目录。

问题:我不想和X混淆。这是一个完全通过SSH处理的服务器系统。 所以我正在寻找能做ASCII布局的东西,也许用简单的pipe道和连字符来表示线条或其他东西。

有谁知道这样的效用? 我确定自己可以写些东西,但是这是一个很less的项目,处理间距和布局等等。 我真的很想发现有人为我做了。 唉,谷歌似乎并不知道这样的事情,或者如果是这样,它隐藏在标准的一般Unix文件层次结构的优秀视觉解释堆下面。 谢谢!

我会用tree

 $ tree -d / usr | head -n 12
在/ usr
 |  -  X11R6
 |  ` -  lib
 |  ` -  X11
 |  - 狡猾
 |  - 斌
 |  ` -  X11  - >。
 |  - 游戏
 |  -  i586-mingw32msvc
 |  |  - 斌
 |  |  - 包括
 |  |  |  -  GL

如果你没有树,你可以使用这个linux / unix命令:

 ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/' 

您也可以在这里查看详细信息。

上述命令的解释:

ls -R列出所有目录,子目录,

解释ls -Rrecursion地列出所有的文件和目录

例如:

 ./sys/devices/platform/ag71xx.0/net/eth0: addr_assign_type device iflink speed ./sys/devices/platform/ag71xx.0/net/eth0/queues: tx-0 

grep ":$"过滤只有行结束之前的文件,因此保持,类似。

 ./sys/devices/platform/ag71xx.0/net/eth0: ./sys/devices/platform/ag71xx.0/net/eth0/queues: 

然后一系列的多个命令通过使用-e切换到sed

's/:$//'所有trailin :

's/[^-][^\/]*\//--/g'只留下/ -之间的内容-并用--

剩下的两个命令添加几个空格和一个|

结果是这样的:

  |-----------eth0 |-------------queues