默认情况下,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
删除1
st行,并删除除 ( ) 最后 ( ) 行之外的所有行上的前四个字符(s
将前四个字符替换为空)。选项是保留颜色,因为它的输出不会发送到终端。!
$
-C
tree
您可以为其创建一个函数:
ltree() (
set -o pipefail
if [ -t 1 ]; then
set -- -C "$@"
fi
tree "$@" | sed '1d;$!s/....//'
)
请注意,如果传递多个目录(如ltree dir1 dir2
),它将无法正常工作。在这种情况下,您可能需要正常的tree
输出。