我可以通过管道“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