使用zip archive file
我得到:
adding: file (deflated 40%)
-rw-rw-r-- 1 lenduya lenduya 757 Jan 18 16:26 archive.zip
-rw-rw-r-- 1 lenduya lenduya 973 Jan 18 16:25 file
问题是我不知道它是如何得到 40% 的。973/757 是 1.28,757/973 是 0.77。757/(973-757) 是 3.5,973/(973/757) 是 4.5。
奖励:目标是脚本的参数是一个文件。我必须打印以输出的压缩率zip
。我的想法是,我将使用摘要,将其输出到文件,然后从那里使用或zip
过滤出所需的信息。将处理浮点格式。我走的路好吗?还是有更简单的方法?cut
tr
bc
答案1
第一个问题:40%。这是在压缩源文件时删除了多少“空间”。.zip 文件的大小包括开销,例如 CRC 值、内部文件索引等。源文件越小,用于开销的空间相对比率就越大。
要查找文件的压缩大小(无需开销),请使用unzip
并列出内容
unzip -v archive.zip
您的示例可能使用了 ~173 字节或 ~23% 的存档开销。此处处理 18K 的文件使用了大约相同的开销 162 字节或 ~0.2% 的 zip 文件大小。
您的情况的计算结果是:压缩大小~584 字节,节省空间 973-584=389 字节,压缩比 584/973=60%,或缩减比 389/973=40%,开销 757-584=173 和 173/757=23%。
奖励部分:输出。
您可以读取该输出并根据需要对其进行解析。压缩后的百分比将尽可能接近小数。如果您处理一个文件,那还不错。如果您在一个存档中处理多个文件,那可能会很有趣,尽管仍然有可能。更好的方法是使用unzip
上面的命令。如果您在存档上运行它,您会看到它列出了文件的大小和压缩大小两次。第二次是存档的摘要,在本例中是一个文件。如果您有多个文件,则摘要是节省的空间总量,占原始文件大小的百分比。
因为你是一名学生,所以我将把解析工作留给你的想象力,作为磨练你技能的练习。
运气。