如何列出 zip 存档的内容,但仅列出第一级?

Sap*_*pir 12 compression directory archive

我有一个很大的 zip 文件,我想知道它包含什么。我知道我可以运行:

zipinfo file.zip
Run Code Online (Sandbox Code Playgroud)

但是输出太冗长,子目录中有很多文件。

我想查看顶级文件的列表。

例子

如果正常输出是:

-sh-3.2$ zipinfo file.zip
Archive:  file.zip   999999999 bytes   99999 files
-rw-r--r--  2.3 unx     3894 tx defN  3-Jul-11 13:11 file1
drwxr-xr-x  2.3 unx        0 bx stor 23-Feb-12 21:00 dir1/
-rw-r--r--  2.3 unx      269 tx defN 23-Oct-11 14:34 dir1/file2
drwxr-xr-x  2.3 unx        0 bx stor 25-Sep-11 03:53 dir1/subdir1/
...
drwxr-xr-x  2.3 unx        0 bx stor 23-Feb-12 21:00 dir2/
...
Run Code Online (Sandbox Code Playgroud)

我想要一个将输出的命令:

-sh-3.2$  <answer>
Archive:  file.zip   999999999 bytes   99999 files
-rw-r--r--  2.3 unx     3894 tx defN  3-Jul-11 13:11 file1
drwxr-xr-x  2.3 unx        0 bx stor 23-Feb-12 21:00 dir1/
drwxr-xr-x  2.3 unx        0 bx stor 23-Feb-12 21:00 dir2/
drwxr-xr-x  2.3 unx        0 bx stor 23-Feb-12 21:00 dir3/
...
Run Code Online (Sandbox Code Playgroud)

小智 11

您可以使用 grep 过滤输出。在这里,我告诉 grep 隐藏所有包含斜杠 '/' 和斜杠后的任何行的行:

zipinfo file.zip | grep -v "/."
Run Code Online (Sandbox Code Playgroud)


小智 6

在 @dvb 的答案之上扩展和构建,您可以使用扩展正则表达式设置深度级别:

zipinfo file.zip | egrep "^([^/]*/?){<deepness-level>}$"
Run Code Online (Sandbox Code Playgroud)