有没有办法让树不显示顶层?

Ric*_*ick 4 tree

默认情况下,tree显示如下:

\n
$ tree\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Package.resolved\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Package.swift\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Sources\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 SwiftClientSDK\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 OpenAPI.yaml\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 SwiftClientSDK.swift\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 openapi-generator-config.yaml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Tests\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 SwiftClientSDKTests\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 SwiftClientSDKTests.swift\n
Run Code Online (Sandbox Code Playgroud)\n

我想让它显示 cwd 的内容,如下所示:

\n
Package.resolved\nPackage.swift\nSources\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 SwiftClientSDK\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 OpenAPI.yaml\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 SwiftClientSDK.swift\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 openapi-generator-config.yaml\nTests\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 SwiftClientSDKTests\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 SwiftClientSDKTests.swift\n
Run Code Online (Sandbox Code Playgroud)\n

我在手册页中看到的任何内容都表明这是可能的。

\n

Sté*_*las 11

看起来不像

tree -- *
Run Code Online (Sandbox Code Playgroud)

很接近,但它抱怨那些不是目录类型的文件并遵循目录的符号链接。

您始终可以对输出进行后处理以删除额外的缩进:

tree -C | sed '1d;$!s/....//'
Run Code Online (Sandbox Code Playgroud)

这里d删除1st行,并删除除 ( ) 最后 ( ) 行s之外的所有行上的前四个字符(将前四个字符替换为空) 。选项是保留颜色,因为它的输出不会发送到终端。!$-Ctree

您可以为其创建一个函数:

ltree() (
  set -o pipefail
  if [ -t 1 ]; then
    set -- -C "$@"
  fi
  tree "$@" | sed '1d;$!s/....//'
)
Run Code Online (Sandbox Code Playgroud)

请注意,如果传递多个目录(如ltree dir1 dir2),它将无法正常工作。在这种情况下,您可能需要正常的tree输出。