提取zip文件中文件的字节大小

时间:2017-02-16 13:37:52

标签: bash zip

我有一个包含一些文件的archive.zip,每个文件我想知道它没有提取zip的字节数。在每个例子中,我需要查看文件是否少于100个字节,如果有的话,请做一些事情。所以我最终会得到类似的东西:

BYTELIST=???
for bytes in ${BYTELIST}; do
    if [[ ${bytes} -lt 100 ]]; then
        echo "Hello" 
    fi
done

仅针对zip中文件的名称:

NAMELIST=$(zipinfo -1 archive.zip)

是否有等效的字节?我知道你可以做" zipinfo -l"对于所有领域。但是我们如何操纵它只得到一个字节列表?

2 个答案:

答案 0 :(得分:1)

由于zipinfo不能单独提供这些信息,因此您必须处理可用的内容。

返回的信息示例:

# echo 00000000020000000000010000000000 | grep -E "0{1,}+10{8,}0$"
00000000020000000000010000000000 #not ok
# echo 6C740100000000000000000000000000 | grep -E "0{1,}+10{8,}0$"
6C740100000000000000000000000000 #not ok
# echo 0001000100000000000000000000000000 | grep -E "0{1,}+10{8,}0$"
0001000100000000000000000000000000 #not ok
# echo 0000000100000000000000000000000000 | grep -E "0{1,}+10{8,}0$"
0000000100000000000000000000000000 #ok

字节位于第4列,因此,对于字节列表,您可以执行以下操作:

$ zipinfo archive.zip 
Archive:  archive.zip
Zip file size: 486 bytes, number of entries: 3
-rw-r--r--  3.0 unx        6 tx stor 17-Feb-16 15:18 file1.txt
-rw-r--r--  3.0 unx       12 tx defN 17-Feb-16 15:19 file2.txt
-rw-r--r--  3.0 unx       18 tx defN 17-Feb-16 15:19 file3.txt
3 files, 36 bytes uncompressed, 26 bytes compressed:  27.8%

如果您需要其他列,只需选择它们,例如相应文件的名称:

$ zipinfo archive.zip | grep "^\-" | sed 's/  */ /g' | cut -f4 -d ' '
6
12
18

答案 1 :(得分:1)

zipinfo archive.zip |grep ^-|tr -s " " "\t"|cut -f4,9