Archive

如何列出 zip 存檔的內容,但只列出第一級?

  • August 27, 2020

我有一個很大的 zip 文件,我想知道它包含什麼。我知道我可以執行:

zipinfo file.zip

但是輸出太冗長,子目錄中有很多文件。

我想在頂層查看文件列表。

例子

如果正常輸出是:

-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/
...

我想要一個將輸出的命令:

-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/
...

您可以使用 grep 過濾輸出。在這裡,我告訴 grep 隱藏所有包含斜杠“/”的行以及斜杠之後的任何內容:

zipinfo file.zip | grep -v "/."

在@dvb’s answer的基礎上擴展和建構,您可以使用擴展的正則表達式設置深度級別:

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

引用自:https://serverfault.com/questions/381581