如何在档案中的文件中搜索字符串?

如何在档案中的文件中搜索字符串?

我可以通过管道“grep”和“find”命令在多个文件中搜索特定字符串。

现在,我有大约 10 个 zip 文件,每个文件都存档了大量文本文件。有什么方法可以在不解压 zip 文件的情况下,在所有 zip 文件存档的所有文本文件中搜索字符串吗?

答案1

unzip -c \*.zip | grep yourtext

您可以在 grep 命令中使用一些正则表达式来微调字符串匹配

根据以下评论,zgrep这将是一个更好的选择。

答案2

您还可以使用 unzip 包中包含的 zipgrep 命令。例如:

for z in *.zip ; do zipgrep PATTERN $z |sed "s/^/$z: /" ; done

此命令还会为您提供档案内匹配的文件名。

答案3

使用以下方式将档案挂载为目录动静脉畸形 或者fuse-zip。 两者都是保险丝文件系统。

AVFS 提供了文件系统的视图,~/.avfs其中每个存档文件都有一个关联的目录,该目录的名称相同,#末尾带有 。

mountavfs
grep -r PATTERN ~/.avfs/$PWD/*.zip\#/
unmountavfs

Fuse-zip 将 zip 文件挂载到目录中。

for z in *.zip; do mkdir "$z.d" && fuse-zip "$z" "$z.d"; done
grep -r PATTERN *.zip.z/
fusermount -u *.zip.d
rmdir *.zip.d

相关内容