zipinfo命令是Linux系统中用于查看ZIP格式压缩文件详细信息的命令行工具。它可以显示ZIP文件中的文件列表、压缩率、加密状态、文件权限、时间戳等详细信息,比unzip -l命令提供的信息更加全面。
ls -l命令的输出,可以显示文件权限、所有者、大小、压缩率等详细信息,并支持多种输出格式选项。
zipinfo [选项] 压缩文件[.zip] [文件...]
| 选项 | 说明 |
|---|---|
-1 |
只显示文件名,每行一个文件 |
-2 |
显示文件名和文件大小 |
-h |
显示头部信息(文件名、大小、文件数等) |
-l |
显示长格式信息(类似于ls -l) |
-m |
显示中格式信息(文件名、大小、日期) |
-s |
显示短格式信息(默认格式) |
-t |
显示总计信息(文件数、总大小等) |
-v |
显示详细信息(包括CRC校验、压缩方法等) |
-z |
显示ZIP文件的注释信息 |
-T |
以时间戳格式显示日期和时间 |
-M |
分页显示输出,类似more命令 |
-C |
不区分大小写匹配文件名 |
-x 模式 |
排除匹配指定模式的文件 |
-i 模式 |
只显示匹配指定模式的文件 |
-r |
递归处理子目录(某些版本支持) |
-H |
不显示头部信息 |
-L |
将文件名转换为小写 |
-U |
将文件名转换为大写 |
zipinfo命令的输出格式示例:
Archive: example.zip
Zip file size: 12345 bytes, number of entries: 10
-rw-r--r-- 2.3 unx 4560 tx defN 21-Jan-01 12:34 file1.txt
drwxr-xr-x 2.3 unx 0 bx stor 21-Jan-01 12:34 directory/
-rw-r--r-- 2.3 unx 7890 tx defN 21-Jan-01 12:34 directory/file2.txt
| 字段 | 说明 | 示例 |
|---|---|---|
| 权限 | Unix文件权限表示 | -rw-r--r-- |
| 版本 | ZIP规范版本 | 2.3 |
| 系统 | 创建文件的操作系统:unx=Unix, win=Windows, mac=Mac | unx |
| 文件类型 | tx=文本文件, bx=二进制文件, di=目录 | tx |
| 压缩方法 | stor=不压缩, def=Deflate, bz2=BZIP2, lzma=LZMA | defN |
| 日期时间 | 文件的最后修改日期和时间 | 21-Jan-01 12:34 |
| 文件名 | ZIP中的文件或目录名 | file1.txt |
zipinfo通常作为unzip包的一部分安装。如果系统中没有zipinfo命令,可以安装unzip包:
sudo apt update
sudo apt install unzip
sudo yum install unzip
# 或使用dnf(Fedora/RHEL8+)
sudo dnf install unzip
sudo pacman -S unzip
zipinfo包。
显示ZIP文件的基本信息:
# 创建测试ZIP文件
echo "Test file 1" > file1.txt
echo "Test file 2" > file2.txt
zip example.zip file1.txt file2.txt
# 显示ZIP文件基本信息
zipinfo example.zip
# 输出示例:
# Archive: example.zip
# Zip file size: 567 bytes, number of entries: 2
# -rw-r--r-- 2.3 unx 12 tx defN 23-Dec-15 10:30 file1.txt
# -rw-r--r-- 2.3 unx 12 tx defN 23-Dec-15 10:30 file2.txt
# 2 files, 24 bytes uncompressed, 24 bytes compressed: 0.0%
使用-1选项只显示文件名:
# 只显示文件名,每行一个
zipinfo -1 example.zip
# 输出:
# file1.txt
# file2.txt
使用-l选项显示长格式信息:
# 显示长格式信息(类似于ls -l)
zipinfo -l example.zip
# 显示更详细的信息(包括CRC等)
zipinfo -v example.zip
查看ZIP文件中特定文件的信息:
# 查看特定文件
zipinfo example.zip file1.txt
# 使用通配符匹配多个文件
zipinfo example.zip "*.txt"
# 排除特定文件
zipinfo example.zip -x "file2.txt"
查看ZIP文件的注释信息:
# 创建带注释的ZIP文件
zip -z example.zip
# 提示输入注释
# 显示ZIP文件注释
zipinfo -z example.zip
显示ZIP文件的统计信息:
# 显示总计信息
zipinfo -t example.zip
# 输出示例:
# 2 files, 24 bytes uncompressed, 24 bytes compressed: 0.0%
# 显示头部和总计信息
zipinfo -ht example.zip
对于包含大量文件的ZIP文件,使用分页显示:
# 创建包含多个文件的ZIP
for i in {1..100}; do echo "File $i" > "file$i.txt"; done
zip large.zip file*.txt
# 分页显示
zipinfo -M large.zip
# 按空格键翻页,按q键退出
使用模式匹配过滤文件:
# 创建包含多种类型文件的ZIP
echo "text" > doc1.txt
echo "text" > doc2.txt
echo "data" > data1.csv
echo "data" > data2.csv
zip mixed.zip *.txt *.csv
# 只显示txt文件
zipinfo -i "*.txt" mixed.zip
# 排除csv文件
zipinfo -x "*.csv" mixed.zip
# 统计ZIP文件中不同类型的文件数量
zipinfo -1 archive.zip | awk -F. '{print $NF}' | sort | uniq -c | sort -rn
# 找出ZIP中最大的文件
zipinfo -v archive.zip | grep -A1 "compressed size" | grep -v "compressed size" | sort -rn | head -5
# 检查ZIP文件中是否有加密文件
zipinfo archive.zip | grep -i "encrypted"
# 计算ZIP文件的平均压缩率
zipinfo -t archive.zip | awk '{print $(NF-1)}' | tr -d '%'
# 批量查看多个ZIP文件的信息
for zipfile in *.zip; do
echo "=== $zipfile ==="
zipinfo -t "$zipfile"
done
# 批量提取ZIP文件中的特定类型文件
for zipfile in *.zip; do
echo "从 $zipfile 中提取PDF文件..."
zipinfo -1 "$zipfile" | grep -i "\.pdf$" | xargs -I {} unzip "$zipfile" "{}"
done
#!/bin/bash
# 创建ZIP文件详细报告
REPORT_FILE="zip_report_$(date +%Y%m%d).txt"
echo "ZIP文件分析报告 - $(date)" > "$REPORT_FILE"
echo "=====================================" >> "$REPORT_FILE"
for zipfile in *.zip; do
echo "文件: $zipfile" >> "$REPORT_FILE"
echo "大小: $(du -h "$zipfile" | cut -f1)" >> "$REPORT_FILE"
echo "MD5: $(md5sum "$zipfile" | cut -d' ' -f1)" >> "$REPORT_FILE"
echo "内容:" >> "$REPORT_FILE"
zipinfo -1 "$zipfile" | sed 's/^/ /' >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"
done
echo "报告已生成: $REPORT_FILE"
# 比较两个ZIP文件的内容差异
diff <(zipinfo -1 archive1.zip | sort) <(zipinfo -1 archive2.zip | sort)
# 比较文件大小和日期
zipinfo -l archive1.zip | awk '{print $9, $6, $7, $8}' > filelist1.txt
zipinfo -l archive2.zip | awk '{print $9, $6, $7, $8}' > filelist2.txt
diff filelist1.txt filelist2.txt
| 功能 | zipinfo | unzip -l |
|---|---|---|
| 显示文件权限 | 支持(详细格式) | 不支持 |
| 显示压缩方法 | 支持 | 不支持 |
| 显示操作系统信息 | 支持 | 不支持 |
| 显示CRC校验值 | 支持(详细模式) | 不支持 |
| 文件过滤(-i, -x) | 支持 | 不支持 |
| 多种输出格式 | 支持(-1, -2, -s, -m, -l) | 单一格式 |
| 显示ZIP注释 | 支持(-z) | 不支持 |
| 分页显示 | 支持(-M) | 不支持 |
| 安装需求 | 需要unzip包 | 需要unzip包 |
使用zipinfo的详细模式查看:
# 查看是否有加密文件
zipinfo -v encrypted.zip | grep -i "encryption"
# 或者使用长格式查看,加密文件会有特殊标记
zipinfo -l encrypted.zip | grep -i "encrypted"
这些标记表示创建ZIP文件的操作系统:
使用-t选项查看总计信息,其中包含压缩率:
# 查看总体压缩率
zipinfo -t archive.zip
# 查看每个文件的压缩率(详细模式)
zipinfo -v archive.zip | grep -A2 "compressed size"
zipinfo只能查看ZIP格式的文件。对于其他格式,可以使用相应的工具:
tar -tzf file.tar.gztar -tjf file.tar.bz2unrar l file.rar7z l file.7zzipinfo file.zip 或 unzip -l file.zipzipinfo -1获取文件列表,便于脚本处理grep命令查找特定类型的文件:zipinfo -1 archive.zip | grep "\.jpg$"-T选项将日期转换为时间戳,便于程序处理-M选项分页查看,避免输出过长-i和-x选项过滤文件,只查看需要的文件zipinfo -t archive.zip,如果正常会显示统计信息diff <(zipinfo -1 file1.zip | sort) <(zipinfo -1 file2.zip | sort)zipinfo -1 archive.zip > filelist.txt解压ZIP文件的工具,也有基本列表功能
创建ZIP压缩文件的工具
显示ZIP文件内部结构的详细信息
编辑ZIP文件注释的工具