`unzip -l`时提取zip文件中的文件名列表

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

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

    假设没有任何文件在名称中有空格:

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

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

     unzip -Z -1 archive.zip 

    要么

     zipinfo -1 archive.zip 

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

    这两个命令完全相同。 -Z选项告诉解压缩将其余选项作为zipinfo选项处理。 请参阅手册页以获取unzip和zipinfo 。

    如果您需要为空格提供文件名,请尝试:

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

    使用awk:

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