`grep -lr` 결과를 트리로 표시

`grep -lr` 결과를 트리로 표시

다양한 하위 디렉터리에 정리된 수많은 텍스트 파일을 검색하고 있습니다. 다음과 같은 명령을 실행하면 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

참고로:

관련 정보