Finden Sie bitte meine OS-Details:
$ uname -a
AIX xxyy 1 6 000145364C00
Ich habe den folgenden Befehl ausprobiert, um die Größe einer Datei im gzip-Archiv abzurufen:
$ gzip -l mycontent.DAT.Gz
compressed uncompr. ratio uncompressed_name
-1223644243 1751372002 -75.3% mycontent.DAT.Gz
Ich bin mir nicht sicher, wie ich die entpackte Größe daraus interpretieren soll. Komprimierte Dateigröße nahe 4 GB.
Also habe ich diese Option ausprobiert, um korrekte Daten zu erfassen:
$ zcat mycontent.DAT.Gz | wc -c
Es gibt mir diesen Fehler:
mycontent.DAT.Gz.Z:A file or directory in the path name does not exist.
0
Können Sie mir bitte sagen, wie ich diesen Wert aus dem Shell-Skript erfassen kann, ohne die Quelldatei zu dekomprimieren?
Antworten:
So beantworten Sie den Fragentitel:
Wie Sie offensichtlich wissen, zeigt die Option
-l
(--list
) normalerweise die unkomprimierte Größe an.Was angezeigt wird, wird nicht aus den Daten berechnet, sondern wurde im Header als Teil der komprimierten Datei gespeichert.
In Ihrem Fall
-l
funktioniert die Option aus irgendeinem Grund nicht.Es ist jedoch nicht möglich, die unkomprimierte Größe anhand der komprimierten Rohdaten zu "messen". Die komprimierten Daten enthalten lediglich keine weiteren Informationen. Dies ist nicht verwunderlich, da bei der Komprimierung alles weggelassen werden muss, was nicht benötigt wird.
Sie müssen die nicht komprimierten Daten nicht auf der Festplatte speichern:
zcat file.gz | wc -c
ist der richtige Ansatz - aber wie @OleTange antwortete,zcat
scheint es nicht der zu sein, von dem Sie stammengzip
.Die Alternative ist die Verwendung der
gzip
Optionen-d
(--decompress
) und-c
(--to-stdout
) in Kombination mitwc
Option-c
(--bytes
):quelle
-l
Option hat einen Fehler für Dateien, die größer als 4 GB sind: bugs.debian.org/cgi-bin/bugreport.cgi?bug=149775Ihr
zcat
seid nicht GNU zcat sondern von compress. Versuchen:quelle
gzip -l hat bei mir nicht funktioniert, nur git-1 ... aber das hat:
quelle
Ich finde alle Websites im Web und löse dieses Problem nicht, wenn die Dateigröße 4 GB überschreitet.
Meine Lösung lautet :
Um die Gesamtgröße aus der gz-Datei zu erhalten:
quelle