递归地列出所有的目录树格式(List all directories recursively in

2019-07-17 23:59发布

我想模拟tree使用shell脚本,递归地显示所有目录,这种格式的命令:

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

我怎样才能做到这一点?

Answer 1:

试着做这个(不完全相同的输出,但非常接近):

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

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

与AWK

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



Answer 2:

你可以只启动:

tree .

要么

tree $absolute/path/of/your/dir

如果你想显示隐藏文件。

默认情况下,树不打印隐藏文件(那些以点开头“”),只需键入:

tree -a .

这是什么树命令来完成。



Answer 3:

修改sputnick的回答更贴近您的原始格式(我喜欢):

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

现在唯一的区别是最后一行不以反引号开始:

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

与AWK

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


Answer 4:

从修饰的碱基在AWK一个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='/'

输出看起来更类似于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


Answer 5:

LS-R | grep的 “:$” | SED -e 'S /:$ //' -e 'S / [^ - ] [^ /] * // - / G' -e 's / ^ / /' -e的// | / “

从这里取: http://www.centerkey.com/tree/



文章来源: List all directories recursively in a tree format
标签: shell