“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