다양한 하위 디렉터리에 정리된 수많은 텍스트 파일을 검색하고 있습니다. 다음과 같은 명령을 실행하면 grep -lr foobar ./
다음과 같은 결과를 얻을 수 있습니다.
./dirA/dirA.A/abc.txt
./dirA/dirA.A/def.txt
./dirA/dirA.A/dirA.A.A/ghi.txt
./dirA/dirA.B/jkl.txt
./dirB/mno.txt
명령이 작동하는 방식 과 유사하게 이를 시각적 트리에 표시하는 방법을 원합니다 tree
. 다음과 같이 진행됩니다.
./
dirA/
dirA.A/
abc.txt
def.txt
dirA.A.A/
ghi.txt
dirA.B/
jkl.txt
dirB/
mno.txt
스택이 있는 일부 Python 스크립트에서 이 작업을 수행하는 것이 충분히 간단해 보이지만 방법이 있다면 bash에서 직접 수행할 수 있는 방법이 정말 필요합니다. 그래서 (a) 출력 형식을 지정/변환하거나 (b) 다른 일반적인 "공통 접두사로 들여쓰기" 유틸리티를 찾고 있지만 grep
지금까지 찾을 수 없었습니다.
답변1
tree
내 시스템에 설치된 버전보다 최신 버전을 사용하는 솔루션을 찾았습니다 . 버전 1.8.0 tree
(2018년 11월 16일 릴리스)에는 --fromfile
파일 시스템 자체 대신 파일(또는)에서 디렉터리/파일 목록을 읽고 트리 표현을 생성하는 이 매개 변수가 도입되었습니다.stdin
$ grep -rl 'foobar' ./ |tree --fromfile -F .
./
└── ./
├── dirA/
│ ├── dirA.A/
│ │ ├── abc.txt
│ │ ├── def.txt
│ │ └── dirA.A.A/
│ │ └── ghi.txt
│ └── dirA.B/
│ └── jkl.txt
└── dirB/
└── mno.txt
6 directories, 5 files
참고로: