2017-02-16 47 views
0

我有一个包含一些文件,每个文件的archive.zip我想知道它的字节数量,而不提取zip。举例来说,我需要查看文件是否少于100个字节,如果是这样,请执行一些操作。所以,我最终会是这样的:提取ZIP文件中的文件的字节大小

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

对于拉链我会做文件的唯一名称:

NAMELIST=$(zipinfo -1 archive.zip) 

是否有字节等效?我知道你可以为所有的字段做“zipinfo -l”。但是,我们如何操作这个只获得一个字节列表?

回答

1

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

实例返回:

$ 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% 

的字节在第4列,所以,对于字节的列表,你可以这样做:

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

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

$ zipinfo archive.zip | grep "^\-" | sed 's/ */ /g' | cut -f4,9 -d ' ' 
6 file1.txt 
12 file2.txt 
18 file3.txt 
+0

注意:*/ – Swifting

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

较短解决方案前有2个空格,但答案较少。 – Swifting