트리가 최상위 레벨을 표시하지 않도록 하는 방법이 있습니까?

트리가 최상위 레벨을 표시하지 않도록 하는 방법이 있습니까?

기본적으로 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 줄이 제거 되고 () 마지막 () 줄을 제외한 모든 줄의 처음 4개 문자가 삭제됩니다( 처음 4개 문자를 null로 대체). 옵션은 출력이 터미널로 전송되지 않으므로 색상을 유지하는 것입니다.1s!$-Ctree

이에 대한 함수를 만들 수 있습니다.

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

여러 디렉터리(예: )를 전달하면 ltree dir1 dir2올바르게 작동하지 않습니다 . 이 경우 정상적인 tree출력이 필요할 수 있습니다.

관련 정보