Shell 以树格式递归列出所有目录

Shell 以树格式递归列出所有目录,shell,awk,Shell,Awk,我想使用Shell脚本模拟一个树命令,该脚本以这种格式递归显示所有目录: . |-- Lorem |-- Lorem |-- Lorem |-- Lorem |-- Lorem |-- Lorem `-- Lorem 我如何才能做到这一点?尝试这样做(输出不完全相同,但非常接近): 从 具有 find-类型d-打印2>/dev/null | awk'!/\.$/{对于(i=1;ils-R | grep):$“| sed-e's/:$/'-e's/[^-][^/]*/-/g'-e

我想使用Shell脚本模拟一个
命令,该脚本以这种格式递归显示所有目录:

.
|-- Lorem
|-- Lorem
|-- Lorem
    |-- Lorem
    |-- Lorem
|-- Lorem
`-- Lorem
我如何才能做到这一点?

尝试这样做(输出不完全相同,但非常接近):

具有
find-类型d-打印2>/dev/null | awk'!/\.$/{对于(i=1;ils-R | grep):$“| sed-e's/:$/'-e's/[^-][^/]*/-/g'-e's/^/'-e's/-/'


摘自此处:

修改sputnick的答案以更接近您的原始格式(我更喜欢):

find./-typed-print | sed-e's;[^/]*/;/;g;s;/;g;s;^/$;s;/;|--;g'
现在唯一的区别是最后一行不是以反勾号开始的:

。
|--洛勒姆
|--洛勒姆
|--洛勒姆
|--洛勒姆
|--洛勒姆
|--洛勒姆
|--洛勒姆
具有
find.-type d-print 2>/dev/null | awk'!/\.$/{for(i=1;i您只需启动:

tree .

如果要显示隐藏的文件。

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

tree -a .

这就是tree命令所做的。

在awk命令的基础上修改了


太棒了!但是我如何使用
awk
而不是
sed
来实现这一点?你读过这个问题吗?“我想使用…,模拟
命令。”
tree .
tree $absolute/path/of/your/dir
tree -a .
pwd;find . -type d -print 2>/dev/null|awk '!/\.$/ {for (i=1;i<NF-1;i++){printf("│   ")}print "├── "$NF}'  FS='/'
/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