2017-02-16 87 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