当前位置: 首页>>技术教程>>正文


如何列出文件夹中所有.zip文件的内容以及特定文件的grep?

, ,

问题描述

我有348个zip文件,我想找到其中一个zip文件,unzip -l无法与通配符一起使用吗?

如何通过压缩文件中包含的所有文件的合并列表列出所有.zip文件和grep的内容?

最佳思路

在这里使用zipinfo是一个很好的解决方案。但是,通常,只要您想将命令应用于文件列表并且该命令不接受文件列表,就可以使用for循环:

for file in *.zip; do
    unzip -l "$file"
done \
| grep "\.zip\|setup"

如果您要搜索的文件中包含空格,例如:your file,则在grep正则表达式中,您需要使用反斜杠对每个空格进行转义,例如grep "\.zip\|your\ file"

次佳思路

您可以使用zipinfo。它包含在默认的Ubuntu安装中。有关更多信息,请检查manual page

例如,要在当前目录的一堆zip文件中查找模式setup,请使用以下命令:

find ./ -iname *zip 2> /dev/null -print0 | xargs -0 zipinfo | grep setup

第三种思路

要列出zip存档中的文件,可以使用以下命令。

unzip -l

要grep压缩的存档,您应该使用为使用该类型的存档格式而构建的压缩存档实用程序。

对于zip档案:

zipgrep --help  
usage: zipgrep [egrep_options] pattern zipfile [members...]
Uses unzip and egrep to search the zip members for a string or pattern.

对于tar归档文件:

zgrep --help
Usage: /bin/zgrep [OPTION]... [-e] PATTERN [FILE]...
Look for instances of PATTERN in the input FILEs, using their
uncompressed contents if they are compressed.

OPTIONs are the same as for 'grep'.

还有一些其他工具也可用于存档。您可以将输出放入grep中以执行相同的操作。

zcat
zcat my.archive.zip | grep "some text"

或者您可以使用这些工具的搜索功能

zless
zmore

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8101.html,未经允许,请勿转载。