Самый быстрый способ разработать несжатый размер большого файла GZIPPED

awk '$1 == $2 {n++}; END {print n}'
24
07.02.2015, 13:20
4 ответа

Я считаю, что самый быстрый способ - это модифицировать GZIP , чтобы тестирование в Verbose Mode выводит количество распакованных байтов; В моем системе, с 7761108684-байтовым файлом, я получаю

% time gzip -tv test.gz
test.gz:     OK (7761108684 bytes)
gzip -tv test.gz  44.19s user 0.79s system 100% cpu 44.919 total

% time zcat test.gz| wc -c
7761108684
zcat test.gz  45.51s user 1.54s system 100% cpu 46.987 total
wc -c  0.09s user 1.46s system 3% cpu 46.987 total

, чтобы изменить GZIP (1.6, как доступно на Debian), патч выглядит следующим образом:

--- a/gzip.c
+++ b/gzip.c
@@ -61,6 +61,7 @@
 #include <stdbool.h>
 #include <sys/stat.h>
 #include <errno.h>
+#include <inttypes.h>

 #include "closein.h"
 #include "tailor.h"
@@ -694,7 +695,7 @@

     if (verbose) {
         if (test) {
-            fprintf(stderr, " OK\n");
+            fprintf(stderr, " OK (%jd bytes)\n", (intmax_t) bytes_out);

         } else if (!decompress) {
             display_ratio(bytes_in-(bytes_out-header_bytes), bytes_in, stderr);
@@ -901,7 +902,7 @@
     /* Display statistics */
     if(verbose) {
         if (test) {
-            fprintf(stderr, " OK");
+            fprintf(stderr, " OK (%jd bytes)", (intmax_t) bytes_out);
         } else if (decompress) {
             display_ratio(bytes_out-(bytes_in-header_bytes), bytes_out,stderr);
         } else {
11
27.01.2020, 19:41

Если вам нужен размер сжатого файла или набора файлов, ваша лучшая ставка должна использовать TAR -Z или TAR-DJ вместо Из GZIP как TAR включает в себя несжатые файлы размером. Используйте Strempipe , чтобы заглянуть в список файлов:

aptitude install lesspipe
lesspipe <compressed file> | less

Если Меньше настроен на использование Streampipe :

less <compressed file>

Просто имейте в виду, что он может взять очень долгое время. Однако ваша система остается отзывчивым, что позволяет убивать процесс декомпрессии.

Другим подходом было бы для регистрации сжатого соотношения и запроса этого файла [TEXT]:

gzip --verbose file 2>&1 | tee file.gz.log
file:    64.5% -- replaced with file.gz

требует вычислений, чтобы найти реальный размер файла.

Вы также можете сделать то же самое с помощью TAR , что на самом деле я делаю с большим размером резервных копий, так как он предотвращает пробег через весь процесс декомпрессии, чтобы получить только размер файла или имени.

0
27.01.2020, 19:41
gunzip -c $file | wc -c

Это займет много времени, но вы получите окончательный размер в байтах.

-2
27.01.2020, 19:41

¿Qué pasa con

gzip -l file.gz|tail -n1|awk '{print $2}'

numfmt --to=iec $(gzip -l file.gz|tail -n1|awk '{print $2}')
0
27.01.2020, 19:41

Теги

Похожие вопросы