是否有任何linux命令,我可以从Bash脚本调用,将以树的形式打印目录结构,例如,
folder1
a.txt
b.txt
folder2
folder3
是否有任何linux命令,我可以从Bash脚本调用,将以树的形式打印目录结构,例如,
folder1
a.txt
b.txt
folder2
folder3
当前回答
将Hassou的解决方案添加到你的.bashrc,尝试:
alias lst='ls -R | grep ":$" | sed -e '"'"'s/:$//'"'"' -e '"'"'s/[^-][^\/]*\//--/g'"'"' -e '"'"'s/^/ /'"'"' -e '"'"'s/-/|/'"'"
其他回答
我正在美化@Hassou的答案的输出:
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//──/g' -e 's/─/├/' -e '$s/├/└/'
这很像现在tree的输出:
.
├─pkcs11
├─pki
├───ca-trust
├─────extracted
├───────java
├───────openssl
├───────pem
├─────source
├───────anchors
├─profile.d
└─ssh
你也可以为它创建一个别名:
alias ltree=$'ls -R | grep ":$" | sed -e \'s/:$//\' -e \'s/[^-][^\/]*\//──/g\' -e \'s/─/├/\' -e \'$s/├/└/\''
顺便说一下,树在某些环境下是不可用的,比如MinGW。所以备选方案是有用的。
将Hassou的解决方案添加到你的.bashrc,尝试:
alias lst='ls -R | grep ":$" | sed -e '"'"'s/:$//'"'"' -e '"'"'s/[^-][^\/]*\//--/g'"'"' -e '"'"'s/^/ /'"'"' -e '"'"'s/-/|/'"'"
由于我对其他(非树)答案的输出不太满意(参见我在Hassou's answer的评论),我试着更多地模拟树的输出。
这与罗伯特的答案相似,但水平线并不都是从起点开始的,而是从应该开始的地方开始的。虽然不得不使用perl,但在我的情况下,在我没有树的系统上,perl是可用的。
ls -aR | grep ":$" | perl -pe 's/:$//;s/[^-][^\/]*\// /g;s/^ (\S)/└── \1/;s/(^ | (?= ))/│ /g;s/ (\S)/└── \1/'
输出(缩短):
.
└── fd
└── net
│ └── dev_snmp6
│ └── nfsfs
│ └── rpc
│ │ └── auth.unix.ip
│ └── stat
│ └── vlan
└── ns
└── task
│ └── 1310
│ │ └── net
│ │ │ └── dev_snmp6
│ │ │ └── rpc
│ │ │ │ └── auth.unix.gid
│ │ │ │ └── auth.unix.ip
│ │ │ └── stat
│ │ │ └── vlan
│ │ └── ns
欢迎提出建议,避免多余的竖线:-)
我仍然非常喜欢Ben在Hassou回答的评论中的解决方案,没有(不完全正确的)行,它更干净。对于我的用例,我另外删除了全局缩进,并添加了ls隐藏文件的选项,如下所示:
ls -aR | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\// /g'
输出(更缩短):
.
fd
net
dev_snmp6
nfsfs
rpc
auth.unix.ip
stat
vlan
ns
这就是你要找的树吗?它应该在大多数发行版中(可能作为可选安装)。
~> tree -d /proc/self/
/proc/self/
|-- attr
|-- cwd -> /proc
|-- fd
| `-- 3 -> /proc/15589/fd
|-- fdinfo
|-- net
| |-- dev_snmp6
| |-- netfilter
| |-- rpc
| | |-- auth.rpcsec.context
| | |-- auth.rpcsec.init
| | |-- auth.unix.gid
| | |-- auth.unix.ip
| | |-- nfs4.idtoname
| | |-- nfs4.nametoid
| | |-- nfsd.export
| | `-- nfsd.fh
| `-- stat
|-- root -> /
`-- task
`-- 15589
|-- attr
|-- cwd -> /proc
|-- fd
| `-- 3 -> /proc/15589/task/15589/fd
|-- fdinfo
`-- root -> /
27 directories
样本取自维护者的网页。
您可以添加选项- l#,其中#被一个数字替换,以指定最大递归深度。
删除-d以显示also文件。
你可以用这个:
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
它将在几秒钟内显示当前子目录的图形化表示,例如/var/cache/:
.
|-apache2
|---mod_cache_disk
|-apparmor
|-apt
|---archives
|-----partial
|-apt-xapian-index
|---index.1
|-dbconfig-common
|---backups
|-debconf
源