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


Answers:


17

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

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

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


完美运行,唯一的问题是它没有显示拉链的名称,
Eduard Florinescu 2012年

我编辑了您的帖子,并添加了正则表达式以显示找到设置的文件名,+ 1并接受
Eduard Florinescu 2012年

哦,是的,我忘了周围的参数报价来unzip,多么尴尬。
康拉德·鲁道夫2012年

1
@JaySullivan不要使用此代码,否则包含空格的路径将失败。切勿通过管道输出ls。您可以使用find来代替。
康拉德·鲁道夫

12

您可以使用zipinfo。它包含在默认的Ubuntu安装中。查看手册页以获取更多信息。

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

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

在两个Ubuntu OS 11.10和12.04上测试的每个zip压缩文件,我都会得到一个caution: filename not matched: case1.zip...。caution: filename not matched: case348.zip
爱德华·弗洛里内斯库

@EduardFlorinescu尝试更新的答案。虽然答案为我工作
安瓦尔

问题是该文件可能包含该文件,setup并且发出了相同的错误,尽管它的工作原理如下:zipinfo -l * | grep "setup"
Eduard Florinescu 2012年

我编辑了答案。我认为这是更强大的现在
安华

1
谢谢,谢谢您+1,但是如果zip文件的名称中包含空格,它仍然无法使用。
爱德华·弗洛里内斯库

6

要列出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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.