1

假设我有两个 tar.gz 文件

a1.tar.gz
a2.tar.gz

每个存档包含许多文件,包括一个名为

target.txt

如何使用 zgrep 在这两个档案中搜索 in 而无需搜索每个档案中的所有其他文件BLAHtarget.txt

如果我尝试

zgrep -a BLAH *.tar.gz

然后搜索每个档案中的所有文件,如果我尝试

zgrep --include=target.txt -a BLAH *.tar.gz

然后我得到

zgrep: --include=target.txt: option not supported
4

1 回答 1

0

您可以使用zgrep,但是此命令不会找到您要查找的文件,因为它会在整个 tar 格式的文件中搜索匹配项。这将报告与哪个 tar 文件匹配,BLAH但这并不限制搜索包含该文件的 tar 文件target.txt

有一个名为ugrep的开源工具可以搜索档案(zip、tar、pax、cpio、jar)和 tar.gz tarball。使用选项-z和在递归找到的所有 tar 文件中-g target.txt搜索:BLAHtarget.txt

ugrep -z "BLAH" -g target.txt

仅搜索工作目录而不进行更深入的递归:

ugrep -z "BLAH" -g target.txt .

请注意,该选项-g需要一个全局变量。使用带引号的 glob-g "*.txt"来匹配所有 .txt 文件。

于 2020-04-19T01:41:39.493 回答