当`unzip -l`时,在zip存档中提取文件名列表

时间:2011-08-22 13:59:08

标签: linux unix ksh

当我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" "

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

4 个答案:

答案 0 :(得分:97)

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

unzip -Z -1 archive.zip

zipinfo -1 archive.zip

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

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

答案 1 :(得分:25)

假设没有文件名中有空格:

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)}
'

答案 2 :(得分:6)

如果您需要使用空格来满足文件名,请尝试:

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) }'

答案 3 :(得分:3)

使用awk:

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