无需解压,即可从 tar.gz 文件中读取特定内容文件

无需解压,即可从 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文件中搜索?

答案1

正如评论中提到的,您需要zgrep在压缩档案中使用,但是您正在做的是添加-r到选项列表中,而这不受支持zgrep Ubuntu 自带的

-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,但这可能比必要的麻烦更多。

答案2

如果您只想查看存档中的内容,那么只要单击存档,就可以从右键菜单中更改打开的内容或执行的操作。就像重置默认应用程序/操作一样。

我知道对于很多档案来说,现在的默认操作是将其挂载...无论出于什么原因或自动提取。

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

相关内容