从tar.gz文件中读取特定内容文件而不解压缩

我希望在文件中写下以下条件的结果:

  1. 在一个特定的文件夹中,我有很多tar.gz文件。
  2. 每个tar.gz文件都包含子文件夹中的.dat文件。
  3. 我希望得到这些.dat文件的完整路径,如果我在其中找到一个特定的单词( ERROR24 )。
  4. 这一切都没有提取tar.gz文件

我已经找到并测试了下面一个在文件中写入结果的文件,但我不知道如何查看tar.gz文件。

 grep -rlw --include="*.dat" -e "ERROR24" /home/tests/logs > /home/files/data/result/listErrors.txt 

你能否帮助更新前一个以获得相同的结果但是在tar.gz文件中搜索?

正如评论中所提到的,你需要在压缩档案上使用zgrep ,但是你要做的是在选项列表中添加-r ,而zgrep 附带的zgrep不支持。

-r用于目录树的递归遍历。 我们可以使用find命令执行相同的操作,并使用-exec标志在找到的每个压缩归档上运行zgrep

由于我没有您使用的任何档案示例,下面的命令只是一个示例。 根据需要调整:

 find -type f -name "*.tar.gz" -exec zgrep -a "ERROR24" /home/tests/logs > /home/files/data/result/listErrors.txt \; 

请注意,这里的-l不能真正使用,因为它只列出了归档文件的文件名。 或者,您可以始终使用zcat并使用grep过滤其输出,但这可能比必要的麻烦更多。

如果您只是想查看存档中的内容,只需单击存档,就可以直接更改打开的内容或右键单击菜单中的内容。 与重置默认应用程序/操作一样。

我知道很多档案现在默认的操作就是安装它…无论出于何种原因或自动提取。

或者您在寻找面向命令行的解决方案吗?