tree
出力のインデントを次のように+記号に置き換える必要があります。
$ tree --noreport dir
dir
├── dir1
│ ├── file1
│ └── file2
└── dir2
├── file1
└── file2
次のように印刷されます。
$ tree --noreport dir
+ dir
++ dir1
+++ file1
+++ file2
++ dir2
+++ file1
+++ file2
これは非常に簡単に見えます。出力をパイプsed
し、次を置き換えます。
tree --noreport | sed -e 's/├── \|└── /+ /g' -e 's/│ \| /+/g' -e 's/^/+/' -e '1s/+/+ /'
ただし、これにはいくつかの注意事項があります(たとえば、何らかの理由でディレクトリまたはファイル名に4つのスペースがある場合)。だから、より良い方法があるかどうか疑問に思います。
編集:この特別なケースでは、tree
外部ツールの出力として多くのツリーフラグを取得して使用するにfind
は、可能な限り翻訳を行う必要があるため、これを行う必要がありますが、それは価値がないと思います。すでに1つの次善の作業ソリューションがあります。私がこの質問をする理由は、私が質問を複雑にしすぎて何か明らかなものを見逃していると確信しているからです。
ベストアンサー1
これらの出力を生成する1つの方法は次のとおりです。ただし、順序は異なる場合があります。
$ find ./dir | sed -E ':a;s|/[^/]+/|+/|;ta' | tr / \ | sed s/./+/
同じディレクトリ構造の結果:
+ dir
++ dir2
+++ file2
+++ file1
++ dir1
+++ file2
+++ file1