Text-Processing將
將 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)格式化/轉換 的輸出
grep
,或者(b)我迄今為止無法找到的其他一些通用的“indent-by-common-prefix”實用程序.
我找到了一個解決方案,
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
以供參考: