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
사용 find
및 perl
:
find dir -printf "print '+'x(%d + 1),' ','%f','\n';\n" | perl