使用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
Run Code Online (Sandbox Code Playgroud)
问题是我不确定它是如何获得 40% 的。973/757 是 1.28,757/973 是 0.77。757/(973-757) 是 3.5,973/(973/757) 是 4.5。
奖励:目标是脚本的参数是一个文件。我必须打印以输出zip. 我的思考过程是,我将使用 的摘要,将其zip输出到文件中,然后我将使用cut或过滤掉所需的信息tr。bc将处理浮动格式。我是在一条好的道路上还是有更简单的方法?
第一个问题:40%。这是压缩源文件时从源文件中删除了多少“空间”。.zip 文件的大小包括开销,例如 CRC 值、内部文件索引等。源文件越小,用于开销的空间相对比例就越大。
要查找文件的压缩大小(无需额外开销),请使用unzip并列出内容
unzip -v archive.zip
Run Code Online (Sandbox Code Playgroud)
您的示例可能使用了 ~173 字节或 ~23% 的存档作为开销。此处创建 18K 的文件使用了大约相同的开销 162 字节或 zip 文件大小的约 0.2%。
您的情况的数学是:压缩大小〜584字节,节省空间973-584 = 389字节,压缩率584/973 = 60%,或紧缩率389/973 = 40%,开销757-584 = 173和173 / 757=23%。
奖励部分:输出。
如果您愿意,您可以读取该输出并解析它。缩减后的百分比将尽可能接近,不带小数位。如果您处理一个文件,那还不错。如果您在一个档案中处理多个档案,这可能会很有趣,但仍然有可能。更好的方法可能是使用unzip上面的命令。如果您在存档上运行它,您会看到它列出了文件的大小和压缩大小两次。第二次是存档的摘要,在本例中是一个文件。如果您有多个文件,则摘要是节省的空间的总和,以原始文件大小的百分比表示。
由于你是一名学生,我将把解析工作留给你想象,作为磨练你技能的练习。
运气。
| 归档时间: |
|
| 查看次数: |
7098 次 |
| 最近记录: |