我想使用Shell脚本模拟tree
命令,以此格式递归显示所有目录:
.
|-- Lorem
|-- Lorem
|-- Lorem
|-- Lorem
|-- Lorem
|-- Lorem
`-- Lorem
我该怎么做?
我想使用Shell脚本模拟tree
命令,以此格式递归显示所有目录:
.
|-- Lorem
|-- Lorem
|-- Lorem
|-- Lorem
|-- Lorem
|-- Lorem
`-- Lorem
我该怎么做?
试着这样做(输出不完全相同,但非常接近):
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
您只需启动:
tree .
或者
tree $absolute/path/of/your/dir
如果您想显示隐藏文件。
默认情况下,tree命令不会打印以点“.”开头的隐藏文件,只需键入:
tree -a .
这是tree命令的作用。
tree
命令。” - Zeno Rochatree
命令并不是“模拟”tree
命令。它就是tree
命令,所以你不能使用它。 - Phillip H. Blantonfind ./ -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='/'
基于来自http://www.unix.com/shell-programming-scripting/50806-directory-tree.html 的awk脚本进行修改。
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
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^/]*//--/g' -e 's/^/ /' -e 's/-/|/'
awk
而不是sed
来实现呢? - Zeno Rocha