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


44

"tree"コマンドは、素敵なボックス描画文字を使用してツリーを表示しますが、出力を "code-page-neutral"コンテキストで使用したいと思います(実際には常にコードページがあることを知っていますが、ウランバートルの誰かがスマイリーの顔などを見る心配がないようにしたいと思います)。

以下の例:

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

次のようなものが欲しい:

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

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

ASCIIアートの無限の量を超えるものを見つけることなく、このような変換を実行するためのボックス描画フィルターも探しました:-)。一般的なフィルターは、15分で調理されるような匂いがします-さらに、さらに2日間、すべての面白いコーナーケースにつまずきます:-)


質問ありがとう。私はパイプenscriptの中の木の出力は、印刷書式設定のcontolを取得することができるように私はこれを必要に応じて(私のduplexprパッケージからDPRINT / dprintm使用sourceforge.net/projects/duplexpr/を。
ジョー・

回答:


59

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

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

GNU tree、Unix tree、POSIXはありませんtreetree私が知っている唯一の実装はmama.indstate.edu/users/ice/treeです。
ステファンシャゼル14

3
@StephaneChazelasありがとう、--charsetオプションは常に利用可能になっているはずです。回答を編集しました。
テルドン

素晴らしい!(特にsedバージョン-私にとってsedはawkフロンティアを超えた野生の土地です)
トムグッドフェロー14

1
I木--charset = ASCIIオプション、感謝のような

4
実際には、--charsetオプションを最初に言及する必要があると思います-代わりに使用することsed
有益

30

どう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

2
それは同じだtree --charset nwildner
ステファンChazelas

うん。他の答えは編集されたので、私が書いている間に@terdonがより完全な答えを出したことに気づかなかった;)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.