我正在搜索组织在各种子目录中的大量文本文件。我可以运行诸如 之类的命令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
)而不是文件系统本身读取目录/文件列表并生成树表示:以供参考: