You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计zip包中仅PDF文件数量,排除.metadata后缀文件

问题描述

我能统计zip包内的文件总数,但没法排除带.metadata后缀的文件。怎么只统计这个zip包中的PDF文件数量?我试过用unzip -l 0532.zip查看包内文件,还试过unzip -l 0532.zip | awk '{count = $2} END{print count}'命令,但还是没法排除.metadata文件,统计结果还是总数1634。

相关命令输出

unzip -l 0532.zip 输出示例:

742248    05-31-2023 15:19   /pdf/0531/CP-1960-5266M.pdf
4125      05-31-2023 15:19   /pdf/0531/CB-CB-177729.pdf.metadata
1221395   05-31-2023 15:19   /pdf/0531/CB-CB-177729.pdf
4128      05-31-2023 15:19   /pdf/0531/CP-1988-10086.pdf.metadata
243050    05-31-2023 15:19   /pdf/0531/CP-1988-10086.pdf
4125      05-31-2023 15:19   /pdf/0531/R-1978448.pdf.metadata
5735942   05-31-2023 15:19   /pdf/0531/R-1978448.pdf
.......   ....              ....
.......   .....             ....
---------                     -------
2152688064                     1634 files

之前尝试的命令及结果:

unzip -l 0532.zip | awk '{count = $2} END{print count}'

输出:

1634
解决方案

以下几种方法可以精准统计zip包中的PDF文件数量:

  • 方法1:grep+wc组合
    直接过滤出所有以.pdf结尾的文件行,再统计行数:

    unzip -l 0532.zip | grep -E '\.pdf$' | wc -l
    

    原理:grep -E '\.pdf$' 匹配仅以.pdf结尾的条目,wc -l统计匹配到的行数,即为PDF文件总数。

  • 方法2:awk直接计数
    用awk遍历输出内容,遇到PDF文件就累加计数:

    unzip -l 0532.zip | awk '/\.pdf$/ {count++} END{print count}'
    

    原理:awk对每一行进行匹配,符合\.pdf$规则的行触发计数器count加1,最后输出最终计数。

  • 方法3:zipinfo替代(部分系统支持)
    如果你的系统安装了zipinfo,可以用它替代unzip -l,逻辑一致:

    zipinfo 0532.zip | grep -E '\.pdf$' | wc -l
    

注:上述命令只会统计文件,不会误算目录,因为unzip -l/zipinfo中目录的行不会以.pdf结尾。

内容的提问来源于stack exchange,提问作者thichxai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 23:45:16