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

Jen*_* D. 7 filesystems visualization ascii

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

问题:我不想弄乱 X。这是我完全通过 SSH 处理的服务器系统。所以我正在寻找一些可以进行 ASCII 布局的东西,也许用简单的管道和连字符来表示行或其他东西。

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

Den*_*son 28

我会使用tree.

$ tree -d /usr|head -n 12
/usr
|-- X11R6
| `-- 库
| `-- X11
| `——狡猾的
|-- 斌
| `-- X11 -> .
|-- 游戏
|-- i586-mingw32msvc
| |-- 斌
| |-- 包括
| | |-- GL


Edu*_*scu 5

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

ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/   /' -e 's/-/|/'
Run Code Online (Sandbox Code Playgroud)

您还可以使 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
Run Code Online (Sandbox Code Playgroud)

grep ":$"仅过滤:行结束之前的文件,因此仍然存在,例如。

./sys/devices/platform/ag71xx.0/net/eth0:
./sys/devices/platform/ag71xx.0/net/eth0/queues:
Run Code Online (Sandbox Code Playgroud)

然后使用-eswitch传递一系列多个命令sed

's/:$//' 去掉所有的拖尾 :

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

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

结果是这样的:

   |-----------eth0
   |-------------queues
Run Code Online (Sandbox Code Playgroud)