Linux command to print directory structure in the form of a tree
是否有任何linux命令可以从Bash脚本调用,该脚本将以树的形式打印目录结构,例如,
1 2 3 4 5
| folder1
a.txt
b.txt
folder2
folder3 |
-
只需运行find。或者find . -not -path '*/\.*'隐藏以.开头的文件和文件夹。如果你想输出带空格的输出,就像在问题中一样,将它与"find prettifier"脚本一起使用:find . -not -path '*/\.*' | python -c"import sys as s;s.a=[];[setattr(s,'a',list(filter(lambda p: c.startswith(p+'/'),s.a)))or (s.stdout.write(' '*len(s.a)+c[len(s.a[-1])+1 if s.a else 0:])or True) and s.a.append(c[:-1]) for c in s.stdin]"
-
这些问题不应该迁移到SuperUser而不是关闭吗?
-
@Balmipour:也许他们应该。但是"只能迁移不到60天的问题"(什么是迁移以及它是如何工作的?)。不要问我为什么。
-
我不认为这个问题应该被关闭为"偏离主题"。标签似乎是正确的。
-
在不迁移的情况下关闭问题的策略一般对stackoverflow和人类知识都有害。在过去的3天里,我用Google搜索并遇到的每一个问题都因类似的推理而被关闭,并且没有更多的活动能够发生。这意味着没有人可以更新它,没有人可以给出更好的答案,它使stackoverflow看起来短视或精英。当发现主题具有这些条件时,Stackoverflow应考虑要求迁移。
-
我同意@NickYeates我在2017年9月下旬仍在这里找到同样问题的答案。在设计这些问答政策的时候考虑长期!
-
虽然这类问题可能更多地属于Serverfault而不是SO,但我没有得到关闭有趣帖子的意义。它清晰,标记正确。这样的问题是否会被关闭,因为用于打印树的实用程序是tree,这看起来太明显了?如果是的话,问题和答案就不会得到数百票。这个结果是谷歌最喜欢的话题,请重新打开,这样我们就可以给出一些更好的答案!
这是你在寻找树吗? 它应该在大多数发行版中(可能作为可选安装)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| ~> 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以显示文件。
-
注意任何访问者看到这个:删除-d以显示文件!
-
注意任何访问者看到这个:手册页列出了一大堆更多标志给你:)
-
您也可以使用Homebrew在Mac OS X上安装它!
-
注意任何访问者看到这个:我无法得到tree来计算任何目录中的文件数,所以我写了github.com/fiatjaf/tree-dir,它与tree -d相同,但是这样做了(也没有颜色)。
-
要在Mac OS X上安装w / Homebrew:brew install tree
-
在cygwin apt-cyg install tree上安装(假设你已经安装了apt-cyg)
-
没有内置。我需要一些便携的东西。
-
因为有apt-get,brew,yum,apt-cyg等的例子,我还会添加pacman pacman -S tree
-
默认情况下,Debian 8 Jessie上未安装tree。 apt install tree得到它。
-
甚至Ubuntu 16.04也没有这个。使用apt-get install tree将安装它。
-
您可以在linux中使用brew安装它 - 安装linuxbrew.sh - 然后brew install tree
-
@blockloop感谢您的精彩提示!我从来不知道apt-cyg,并且总是对非常轻微的setup.ini版本感到恼火,因为常见的安装程序总是抱怨,经常!此外,通常的安装程序安装tree 1.7.0-1,但它不起作用。虽然apt-cyg有效! Windows 10 Pro x64位。对于安装程序,也许我的路径有问题,但我只看到我希望看到的1个Cygwin文件夹,以及安装说的位置。
-
可以添加-s选项以显示大小信息。
-
要在Linux CentOS 6中安装,可以使用yum install tree
-
在mac port install tree上安装
-
如果由于org权限你不能像我一样安装树,请使用:find。 | sed -e"s / [^ - ] [^ /] * // | / g"-e"s / |( [^]) / | - 1 /"
你可以用这个:
1
| ls -R | grep":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/' |
它将在几秒钟内显示没有文件的当前子目录的图形表示,例如 在 / var / cache / 中:
1 2 3 4 5 6 7 8 9 10 11 12
| .
|-apache2
|---mod_cache_disk
|-apparmor
|-apt
|---archives
|-----partial
|-apt-xapian-index
|---index.1
|-dbconfig-common
|---backups
|-debconf |
资源
-
如果你想要它有空格,更像是请求的OP,那么这个:ls -R | grep":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\// /g' -e 's/^/ /'
-
我可以用任何方式忽略dotfiles吗?例如。阻止它列出.git的内容?
-
@GeorgeMillo看到我的评论
-
不打印文件。
-
文件:find . | sed -e"s/[^-][^\/]*\// |/g" -e"s/|\([^ ]\)/|-\1/"
-
是否可以忽略特定目录?
要将Hassou的解决方案添加到.bashrc,请尝试:
1
| alias lst='ls -R | grep":$" | sed -e '"'"'s/:$//'"'"' -e '"'"'s/[^-][^\/]*\//--/g'"'"' -e '"'"'s/^/ /'"'"' -e '"'"'s/-/|/'"'" |
-
如果直接复制,请注意第一行末尾的换行符
-
好别的。但最后却缺少''(2个单引号字符)。它即使没有它也可以工作,但是......如果你想在最后添加一些命令,你会看到文字不完整。所以应该去alias lst='ls -R | grep":$" | sed -e '"'"'s/:$//'"'"' -e '"'"'s/[^-][^\/]*\//--/g'"'"' -e '"'"'s/^/ /'"'"' -e '"'"'s/-/|/'"'"''