web-dev-qa-db-ja.com

「純粋」(7ビット)の「ツリー」コマンド出力ASCII出力

「ツリー」コマンドは、ニースのボックス描画文字を使用してツリーを表示しますが、「コードページ中立」コンテキストで出力を使用したいと思います(実際には常にコードページがあることを知っていますが、それを下位に制限することでキャラクターウランバートルの誰かがにこやかな顔などを見る心配がないことを願っています)。

たとえば、代わりに:

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

私は次のようなものが欲しいです:

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

しかし、私が試した「ツリー」スイッチの組み合わせのどれもこれを与えませんでした(ボックス描画文字をベースラインとして取り、よりきれいにするように見えます)

私はまた、ASCII art :-)の無限の量を超えるものを見つけることなく、そのような変換を実行するボックス描画フィルターを探しました。汎用フィルターは、15分で調理されるもののようなにおいがします-さらに、面白いコーナーケースすべてに偶然に遭遇する2日の増分日。

47
Tom Goodfellow

これについてはよくわかりませんが、必要なのは

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
63
terdon

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
32
user34720