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

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

全部。我正在寻找一种快速而粗略的方法来生成一些目录的图表,这些目录的层次结构几乎相同,但不完全相同,这样我就可以在会议上展示它们,我们可以决定我们最喜欢哪种风格。我对“叶”节点不感兴趣,只对目录感兴趣。

问题是:我不想弄乱 X。这是一个我完全通过 SSH 处理的服务器系统。所以我在寻找可以进行 ASCII 布局的东西,也许使用简单的竖线和连字符来表示行或诸如此类的东西。

有人知道这样的实用程序吗?我确信我可以自己写一些东西,但这是一个非常繁琐的小项目,需要处理间距和布局等;我真的很想发现有人为我做了这件事。唉,谷歌似乎不知道这样的事情……或者如果它知道,它隐藏在大量标准的通用 Unix 文件层次结构的出色视觉解释之下。谢谢!

答案1

我会用tree

$ 树 -d /usr|head -n 12
/usr
|-- X11R6
| `--lib
|`--X11
| `-- 狡猾
|-- 垃圾箱
| `-- X11 -> 。
|-- 游戏
|-- i586-mingw32msvc
| |-- 垃圾箱
| |-- 包括
| | |-- GL

答案2

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

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

你也可以编写一个 shell 脚本来查看详情请见此处。

对上述命令的解释:

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

说明 ls -R 递归列出所有文件和目录

前任:

./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/:$//'剥去所有的痕迹:

's/[^-][^\/]*\//--/g'只留下介于两者之间的内容/ -,并将每个内容替换为--

其余两个命令添加几个空格和一个|

结果如下:

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

相关内容