如何获取 zip 中的目录列表?
How to get a list of directories in a zip?
我正在寻找一种方法来列出 Linux 下 bash 中的 zip 文件中的目录。我发现有一个名为 zipinfo
的应用程序,它可以列出 zip 中的路径(没有任何额外的噪音必须解析(zipinfo -1 foo.zip
),而不是 unzip -l foo.zip
)。但是,这还不够好,我想知道是否有更好的方法。
您可以像这样尝试将 unzip -l
连接到 awk
:
unzip -l foo.zip | awk '/\/$/ { print $NF }'
unzip -l
输出中的所有目录都以斜杠结尾,$NF
仅打印目录路径。
仅列出目录:
unzip -l foo.zip "*/"
输出(例如):
Archive: foo.zip
Length Date Time Name
--------- ---------- ----- ----
0 2015-09-10 20:10 work/
0 2015-08-31 10:45 work/test1/
0 2015-08-31 10:50 work/test1/cc/
0 2015-08-31 10:45 work/test1/dd/
0 2015-08-31 10:45 work/test1/aa/
0 2015-08-31 10:45 work/test1/bb/
0 2015-09-09 21:17 work/tmp/
0 2015-08-23 18:49 work/tmp/work/
0 2015-09-08 19:33 work/tmp/work/loop/
0 2015-08-15 16:00 work/tmp/work/1/
0 2015-08-15 16:00 work/1/
0 2015-08-24 18:40 work/dir/
0 2015-09-05 18:07 work/rename/
--------- -------
0 13 files
或使用
zipinfo -1 foo.zip "*/"
输出(例如):
work/
work/test1/
work/test1/cc/
work/test1/dd/
work/test1/aa/
work/test1/bb/
work/tmp/
work/tmp/work/
work/tmp/work/loop/
work/tmp/work/1/
work/1/
work/dir/
work/rename/
在 Cygwin 上
我无法让其中任何一个在我的 Cygwin 上运行。对于我的直接使用,我只需要深入一个目录:
zipinfo -1 foo.zip | grep -o "^[^/]\+[/]" | sort -u
对于其他目录,您可以将 xargs
与其他一些解析工具结合使用,例如:
## PSEUDOCODE
$ zipinfo -1 foo.zip | \
# from the pipe, run
xargs \
# do something like the following while loop, going one file at a time
while there is still a '/' in the line; do
parse off "[^/]+([/]|)$" from the line
print out the new line
done | \
sort -u
系统信息
$ uname -a
CYGWIN_NT-10.0 C-D-ENG-E-INT3 2.11.2(0.329/5/3) 2018-11-08 14:34 x86_64 Cygwin
$ bash --version
GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ systeminfo | sed -n 's/^OS\ *//p'
Name: Microsoft Windows 10 Enterprise
Version: 10.0.17134 N/A Build 17134
Manufacturer: Microsoft Corporation
Configuration: Member Workstation
Build Type: Multiprocessor Free
$
开源 Zip_Dir_List 工具将为您列出所有目录,即使是没有明确目录条目的 Zip 存档。从 link,转到存储库并按照 readme.txt 中的构建说明进行操作。
我正在寻找一种方法来列出 Linux 下 bash 中的 zip 文件中的目录。我发现有一个名为 zipinfo
的应用程序,它可以列出 zip 中的路径(没有任何额外的噪音必须解析(zipinfo -1 foo.zip
),而不是 unzip -l foo.zip
)。但是,这还不够好,我想知道是否有更好的方法。
您可以像这样尝试将 unzip -l
连接到 awk
:
unzip -l foo.zip | awk '/\/$/ { print $NF }'
unzip -l
输出中的所有目录都以斜杠结尾,$NF
仅打印目录路径。
仅列出目录:
unzip -l foo.zip "*/"
输出(例如):
Archive: foo.zip Length Date Time Name --------- ---------- ----- ---- 0 2015-09-10 20:10 work/ 0 2015-08-31 10:45 work/test1/ 0 2015-08-31 10:50 work/test1/cc/ 0 2015-08-31 10:45 work/test1/dd/ 0 2015-08-31 10:45 work/test1/aa/ 0 2015-08-31 10:45 work/test1/bb/ 0 2015-09-09 21:17 work/tmp/ 0 2015-08-23 18:49 work/tmp/work/ 0 2015-09-08 19:33 work/tmp/work/loop/ 0 2015-08-15 16:00 work/tmp/work/1/ 0 2015-08-15 16:00 work/1/ 0 2015-08-24 18:40 work/dir/ 0 2015-09-05 18:07 work/rename/ --------- ------- 0 13 files
或使用
zipinfo -1 foo.zip "*/"
输出(例如):
work/ work/test1/ work/test1/cc/ work/test1/dd/ work/test1/aa/ work/test1/bb/ work/tmp/ work/tmp/work/ work/tmp/work/loop/ work/tmp/work/1/ work/1/ work/dir/ work/rename/
在 Cygwin 上
我无法让其中任何一个在我的 Cygwin 上运行。对于我的直接使用,我只需要深入一个目录:
zipinfo -1 foo.zip | grep -o "^[^/]\+[/]" | sort -u
对于其他目录,您可以将 xargs
与其他一些解析工具结合使用,例如:
## PSEUDOCODE
$ zipinfo -1 foo.zip | \
# from the pipe, run
xargs \
# do something like the following while loop, going one file at a time
while there is still a '/' in the line; do
parse off "[^/]+([/]|)$" from the line
print out the new line
done | \
sort -u
系统信息
$ uname -a
CYGWIN_NT-10.0 C-D-ENG-E-INT3 2.11.2(0.329/5/3) 2018-11-08 14:34 x86_64 Cygwin
$ bash --version
GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ systeminfo | sed -n 's/^OS\ *//p'
Name: Microsoft Windows 10 Enterprise
Version: 10.0.17134 N/A Build 17134
Manufacturer: Microsoft Corporation
Configuration: Member Workstation
Build Type: Multiprocessor Free
$
开源 Zip_Dir_List 工具将为您列出所有目录,即使是没有明确目录条目的 Zip 存档。从 link,转到存储库并按照 readme.txt 中的构建说明进行操作。