当“unzip -l”时提取 zip 存档中的文件名列表

发布于 2024-11-30 16:36:38 字数 269 浏览 2 评论 0 原文

当我执行 unzip -l zipfilename 时,我发现

1295627  08-22-11 07:10   A.pdf
473980  08-22-11 07:10   B.pdf
...

我只想查看文件名。我尝试了这个

unzip -l zipFilename | cut -f4 -d" "

,但我不认为分隔符只是 " "

When I do unzip -l zipfilename, I see

1295627  08-22-11 07:10   A.pdf
473980  08-22-11 07:10   B.pdf
...

I only want to see the filenames. I try this

unzip -l zipFilename | cut -f4 -d" "

but I don't think the delimiter is just " ".

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

静谧幽蓝 2024-12-07 16:36:38

最简单的方法是使用以下命令:

unzip -Z -1 archive.zip

zipinfo -1 archive.zip

这将仅列出文件名,每行一个。

这两个命令完全相同。 -Z 选项告诉 unzip 将其余选项视为 zipinfo 选项。请参阅 unzipzipinfo

The easiest way to do this is to use the following command:

unzip -Z -1 archive.zip

or

zipinfo -1 archive.zip

This will list only the file names, one on each line.

The two commands are exactly equivalent. The -Z option tells unzip to treat the rest of the options as zipinfo options. See the man pages for unzip and zipinfo.

青芜 2024-12-07 16:36:38

假设所有文件的名称中都没有空格:

unzip -l filename.zip | awk '{print $NF}'

我的解压缩输出同时具有页眉和页脚,因此 awk 脚本变为:

unzip -l filename.zip | awk '/-----/ {p = ++p % 2; next} p {print $NF}'

处理带空格的文件名的版本:

unzip -l filename.zip | awk '
    /----/ {p = ++p % 2; next}
    $NF == "Name" {pos = index($0,"Name")}
    p {print substr($0,pos)}
'

Assuming none of the files have spaces in names:

unzip -l filename.zip | awk '{print $NF}'

My unzip output has both a header and footer, so the awk script becomes:

unzip -l filename.zip | awk '/-----/ {p = ++p % 2; next} p {print $NF}'

A version that handles filenames with spaces:

unzip -l filename.zip | awk '
    /----/ {p = ++p % 2; next}
    $NF == "Name" {pos = index($0,"Name")}
    p {print substr($0,pos)}
'
指尖上的星空 2024-12-07 16:36:38

如果您需要满足带有空格的文件名,请尝试:

unzip -l zipfilename.zip | awk -v f=4  ' /-----/ {p = ++p % 2; next} p { for (i=f; i<=NF;i++) printf("%s%s", $i,(i==NF) ? "\n" : OFS) }'

If you need to cater for filenames with spaces, try:

unzip -l zipfilename.zip | awk -v f=4  ' /-----/ {p = ++p % 2; next} p { for (i=f; i<=NF;i++) printf("%s%s", $i,(i==NF) ? "\n" : OFS) }'
时光是把杀猪刀 2024-12-07 16:36:38

使用awk:

unzip -l zipfilename | awk '{print $4}'

Use awk:

unzip -l zipfilename | awk '{print $4}'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文