我使用以下命令将 myfile.txt 制作成 zip 文件,有没有办法在不解压的情况下获取“myfile.txt”的原始文件大小。
tar -czf myfile.tar.gz myfile.txt
答案1
要获取 ZIP 文件的未压缩大小,我们可以执行压缩可选择--list
或-l
gzip -l mytext.txt.tar.gz
这将给出类似这样的输出
gzip -l mytext.txt.tar.gz
compressed uncompressed ratio uncompressed_name
1475 4608 68.4% mytext.txt.tar
获得压缩文件大小、未压缩大小和压缩率。
答案2
您可以使用以下命令列出 tar 文件的内容(包括原始文件大小):
tar -vtf myfile.tar.gz
如果你只想要myfile.txt
:
tar -vtf myfile.tar.gz myfile.txt
这仅当您添加完整文件路径时才有效,否则使用:
tar -vtf myfile.tar.gz | grep myfile.txt
请注意,tar 必须解压档案才能获取文件信息。不过它会向您隐藏这些信息。
如果您特别需要一种无需解压整个档案即可获取文件元数据的方法,那么最好使用 zip 来存储文件和目录。Zip 在 zip 文件末尾使用一个“中央目录”来存储所有文件元数据。
答案3
我在网上找到了所有网站,但都没有解决文件大小大于 4GB 时获取大小的问题。
首先,哪个最快?
[oracle@base tmp]$ time zcat oracle.20180303.030001.dmp.tar.gz | wc -c 6667028480 实际 0 分 45.761 秒 用户 0m43.203s 系统 0分5.185秒
[oracle@base tmp]$ time gzip -dc oracle.20180303.030001.dmp.tar.gz | wc -c 6667028480 实际 0m45.335s 用户 0m42.781s 系统 0 分 5.153 秒
[oracle@base tmp]$ time tar -tvf oracle.20180303.030001.dmp.tar.gz -rw-r--r-- oracle/oinstall 111828 2018-03-03 03:05 oracle.20180303.030001.log -rw-r----- oracle/oinstall 6666911744 2018-03-03 03:05 oracle.20180303.030001.dmp 实际 0分46.669秒 用户 0m44.347s 系统 0 分 4.981 秒
确实,焦油-xvf是最快的,但是如何在获取标题后取消执行?
我的解决方案是这样的:
[oracle@base tmp]$ time echo $(timeout --signal=SIGINT 1s tar -tvf oracle.20180303.030001.dmp.tar.gz | awk'{print $3}') | grep -o'[[:digit:]]*'| awk'{ sum += $1} END { print sum }' 6667023572 实际 0分1.029秒 用户 0分0.012秒 系统 0分0.063秒