「tree」コマンドは、きれいな罫線素片を使用してツリーを表示しますが、出力を使用したい「コードページニュートラル」コンテキストで(実際にはコードページが常に存在することはわかっていますが、それを下の文字に制限することで、Ulan Batorの誰かが笑顔を見る心配がないことを願っています)。
たとえば、次の代わりに:
├── include │ ├── foo │ └── bar
次のようにします:
+-- include | +-- foo | \-- bar
しかし、私が試した「ツリー」スイッチの組み合わせはどれもこれを与えませんでした(ボックス描画文字をベースラインとして取り、それをさらに美しくするように見えます)
私も無限の量のASCIIアートを超えるものを見つけることなくそのような変換を実行するためのボックス描画フィルターを探しました:-)。一般的なフィルターは、15分で調理されるもののようなにおいがします。さらに、さらに2日間、すべての面白いコーナーケースに遭遇します:-)
コメント
- 質問ありがとうございます。ツリーの出力をenscriptにパイプして、印刷フォーマットの制御を取得できるようにするためにこれが必要でした(duplexprパッケージ sourceforge.net/projects/duplexpr/からdprint / dprintmを使用します。 )
回答
これについてはよくわかりませんが、必要なのは
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
または、
オプション:
$ tree --charset=ascii . |-- file0 `-- foo |-- bar | `-- file2 `-- file1 2 directories, 3 files
コメント
- あり'はGNU
tree
ではなく、'はUnixtree
、'にPOSIXtree
はありません。唯一のtree
実装I '認識しているのは mama.indstate.edu/users/ice/tree です。 - @StephaneChazelasありがとう、
--charset
オプションその場合は常に利用可能である必要があります。回答を編集しました。 - すばらしい! (特にsedバージョン-私にとってsedはawkフロンティアを超えた荒野です)
- ツリー–charset = asciiオプションが好きです、ありがとう
- 実際には
--charset
オプションを最初に説明する必要があります。sed
を使用する代替方法は有益ですが、より複雑です…