"+" 들여쓰기된 "트리" 출력을 얻는 가장 쉬운 방법

"+" 들여쓰기된 "트리" 출력을 얻는 가장 쉬운 방법

tree출력의 들여쓰기를 다음과 같이 + 기호로 바꿔야 합니다 .

$ tree --noreport dir
dir
├── dir1
│   ├── file1
│   └── file2
└── dir2
    ├── file1
    └── file2

다음과 같이 인쇄됩니다.

$ tree --noreport dir
+ dir
++ dir1
+++ file1
+++ file2
++ dir2
+++ file1
+++ file2

이는 매우 간단해 보입니다. 출력을 파이프 sed하고 다음을 대체합니다.

tree --noreport | sed -e 's/├── \|└── /+ /g' -e 's/│   \|    /+/g' -e 's/^/+/' -e '1s/+/+ /'

그러나 여기에는 몇 가지 주의 사항이 있습니다(예: 어떤 이유로든 디렉토리나 파일 이름에 공백이 4개 있는 경우). 그래서 더 나은 방법이 있는지 궁금해합니다.

편집: 이 특별한 경우에는 tree외부 도구의 출력으로 많은 트리 플래그를 얻고 사용하려면 find가능할 수도 있는 번역을 해야 하기 때문에 이 작업을 수행해야 하지만 그럴 가치가 없다고 생각합니다. 이미 하나의 차선책 작업 솔루션이 있습니다. 제가 이 질문을 하는 이유는 제가 질문을 너무 복잡하게 만들고 뭔가 분명한 것을 놓치고 있다고 확신하기 때문입니다.

답변1

이러한 출력을 생성하는 한 가지 방법은 다음과 같습니다. 단, 순서는 다를 수 있습니다.

$ find ./dir | sed -E ':a;s|/[^/]+/|+/|;ta' | tr / \  | sed s/./+/

동일한 디렉터리 구조에 대한 결과:

+ dir
++ dir2
+++ file2
+++ file1
++ dir1
+++ file2
+++ file1

답변2

사용 findperl:

find dir -printf "print '+'x(%d + 1),' ','%f','\n';\n" | perl

관련 정보