我有348个zip文件,我想找到一个zip文件中的文件,unzip -l
不能与通配符一起使用吗?
如何列出所有.zip
文件的内容以及如何grep
通过zip中包含的所有文件的合并列表列出?
我有348个zip文件,我想找到一个zip文件中的文件,unzip -l
不能与通配符一起使用吗?
如何列出所有.zip
文件的内容以及如何grep
通过zip中包含的所有文件的合并列表列出?
Answers:
zipinfo
在这里使用是一个很好的解决方案。但是,通常,每当您要将命令应用于文件列表并且该命令不接受文件列表时,都可以使用for
循环:
for file in *.zip; do
unzip -l "$file"
done \
| grep "\.zip\|setup"
如果要搜索的文件中包含空格,例如:your file
,则在grep正则表达式中,您需要使用反斜杠将每个空格转义,例如grep "\.zip\|your\ file"
。
unzip
,多么尴尬。
find
来代替。
您可以使用zipinfo
。它包含在默认的Ubuntu安装中。查看手册页以获取更多信息。
例如,要setup
在当前目录的一堆zip文件中查找模式,请使用以下命令:
find ./ -iname *zip 2> /dev/null -print0 | xargs -0 zipinfo | grep setup
caution: filename not matched: case1.zip
...。caution: filename not matched: case348.zip
setup
并且发出了相同的错误,尽管它的工作原理如下:zipinfo -l * | 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