Shell 以树格式递归列出所有目录
我想使用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
树
命令,该脚本以这种格式递归显示所有目录:
.
|-- 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