具有“纯”(7 位)ASCII 输出的“tree”命令输出

具有“纯”(7 位)ASCII 输出的“tree”命令输出

“tree”命令使用漂亮的方框绘制字符来显示树,但我想在“代码页中立”上下文中使用输出(我知道确实总是有一个代码页,但通过将其限制为较低的代码页)我希望不用担心乌兰巴托有人看到笑脸等)。

例如代替:

├── include
│   ├── foo
│   └── bar

我想要这样的东西:

+-- include
|   +-- foo
|   \-- bar

但我尝试过的“树”开关组合都没有给出这个(看起来更像是它们以方框图字符作为基线并使其更漂亮)

我还寻找了方框图过滤器来执行此类转换,但除了无限量的 ASCII 艺术之外没有找到任何东西:-)。一个通用的过滤器闻起来像是 15 分钟内就做好的东西 - 再加上两天的时间,就会遇到所有有趣的极端情况:-)

答案1

我对此不确定,但我认为您所需要的只是

tree | sed 's/├/\+/g; s/─/-/g; s/└/\\/g'

例如:

$ tree
.
├── file0
└── foo
    ├── bar
    │   └── file2
    └── file1

2 directories, 3 files
$ tree | sed 's/├/\+/g; s/─/-/g; s/└/\\/g'
.
+-- file0
\-- foo
    +-- bar
    │   \-- file2
    \-- file1

2 directories, 3 files

或者,您可以使用以下--charset选项:

$ tree --charset=ascii
.
|-- file0
`-- foo
    |-- bar
    |   `-- file2
    `-- file1

2 directories, 3 files

答案2

关于什么tree --charset unicode

|-- boot_print
|   |-- config-2.6.32-5-amd64
|   |-- grub
|   |   |-- 915resolution.mod
|   |   |-- acpi.mod
|   |   |-- affs.mod
|   |   |-- afs_be.mod
|   |   |-- afs.mod
|   |   |-- aout.mod
|   |   |-- ata.mod
|   |   |-- ata_pthru.mod
|   |   |-- at_keyboard.mod
|   |   |-- befs_be.mod
|   |   |-- befs.mod
|   |   |-- biosdisk.mod
|   |   |-- bitmap.mod
|   |   |-- bitmap_scale.mod
|   |   |-- blocklist.mod
|   |   |-- boot.img

答案3

我尝试了以下方法来更改区域设置。它还输出 ascii 代码绘制线,与 --charset=ascii 相同。

> LANG=C tree

相关内容