从tar.gz文件中读取特定内容文件而不解压缩
我希望在文件中写下以下条件的结果:
- 在一个特定的文件夹中,我有很多
tar.gz
文件。 - 每个
tar.gz
文件都包含子文件夹中的.dat
文件。 - 我希望得到这些
.dat
文件的完整路径,如果我在其中找到一个特定的单词(ERROR24
)。 - 这一切都没有提取
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
过滤其输出,但这可能比必要的麻烦更多。
如果您只是想查看存档中的内容,只需单击存档,就可以直接更改打开的内容或右键单击菜单中的内容。 与重置默认应用程序/操作一样。
我知道很多档案现在默认的操作就是安装它…无论出于何种原因或自动提取。
或者您在寻找面向命令行的解决方案吗?