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

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

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

$ tree
.
├── Package.resolved
├── Package.swift
├── Sources
│   └── SwiftClientSDK
│       ├── OpenAPI.yaml
│       ├── SwiftClientSDK.swift
│       └── openapi-generator-config.yaml
└── Tests
    └── SwiftClientSDKTests
        └── SwiftClientSDKTests.swift

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

Package.resolved
Package.swift
Sources
└── SwiftClientSDK
    ├── OpenAPI.yaml
    ├── SwiftClientSDK.swift
    └── openapi-generator-config.yaml
Tests
└── SwiftClientSDKTests
    └── SwiftClientSDKTests.swift

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

答案1

看起来不像

tree -- *

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

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

tree -C | sed '1d;$!s/....//'

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

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

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

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

相关内容