我有一个包含一些文件的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"对于所有领域。但是我们如何操纵它只得到一个字节列表?
答案 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