17

tree次の形式ですべてのディレクトリを再帰的に表示するシェル スクリプトを使用してコマンドをシミュレートしたいと考えています。

.
|-- Lorem
|-- Lorem
|-- Lorem
    |-- Lorem
    |-- Lorem
|-- Lorem
`-- Lorem

どうやってやるの?

4

5 に答える 5

31

これを試してみてください(まったく同じ出力ではありませんが、非常に近いです):

find ./ -type d -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'

http://mlsamuelson.com/content/tree-approximation-using-find-and-sedから

find . -type d -print 2>/dev/null|awk '!/\.$/ {for (i=1;i<NF;i++){d=length($i);if ( d < 5  && i != 1 )d=5;printf("%"d"s","|")}print "---"$NF}'  FS='/'

http://www.unix.com/shell-programming-scripting/50806-directory-tree.htmlを参照してください。

于 2013-01-08T20:17:59.383 に答える
16

起動するだけです:

tree .

また

tree $absolute/path/of/your/dir

隠しファイルを表示したい場合。

デフォルトでは、tree は隠しファイル (ドット '.' で始まるファイル) を表示しません。次のように入力します。

tree -a .

これがツリーコマンドの機能です。

于 2016-01-05T10:45:37.613 に答える
4

スプートニクの答えを変更して、元の形式に近づけます(私が好む):

find ./ -type d -print | sed -e 's;[^/]*/; /;g;s;/ ;    ;g;s;^ /$;.;;s; /;|-- ;g'

唯一の違いは、最後の行がバッククォートで始まらないことです:

.
|-- Lorem
|-- Lorem
|-- Lorem
    |-- Lorem
    |-- Lorem
|-- Lorem
|-- Lorem

find . -type d -print 2>/dev/null | awk '!/\.$/ {for (i=1;i<NF-1;i++){printf("    ")}printf("|-- ")};{print $NF}' FS='/'
于 2014-10-23T14:11:41.977 に答える
3

Modified base on the awk one from http://www.unix.com/shell-programming-scripting/50806-directory-tree.html

pwd;find . -type d -print 2>/dev/null|awk '!/\.$/ {for (i=1;i<NF-1;i++){printf("│   ")}print "├── "$NF}'  FS='/'

Output looks more similar to tree:

/etc
├── sudoers.d
├── susehelp.d
│   ├── htdig
├── sysconfig
│   ├── SuSEfirewall2.d
│   │   ├── services
│   ├── network
│   │   ├── if-down.d
│   │   ├── if-up.d
│   │   ├── providers
│   │   ├── scripts
│   ├── scripts
├── sysctl.d
├── systemd
│   ├── system
│   │   ├── default.target.wants
│   │   ├── getty.target.wants
│   │   ├── multi-user.target.wants
于 2017-03-08T04:25:32.430 に答える