Gibt es eine schnelle Möglichkeit, um zu überprüfen, ob eine komprimierte Datei leer ist, oder muss ich sie zuerst entpacken?
Beispiel:
$ touch foo
$ if [ -s foo ]; then echo not empty; fi
$ gzip foo
$ if [ -s foo.gz ]; then echo not empty; fi
not empty
$ wc -l foo.gz
1 foo.gz
command-line
bash
gzip
Dogbane
quelle
quelle
LC_ALL=C
aus, dass gzip nicht tausend Trennzeichen in Zahlen einfügt, damit das Feld mit Null verglichen werden kann.LC_ALL=C
nicht schaden kann.read
sie in einer Unterschale aufgerufen wird (und$line
nicht an die übergeordnete Zeile weitergegeben wird ).tr
behebt das.Wenn mit "leer" gemeint ist, dass die unkomprimierte Datei 0 Byte
gzip --list foo.gz
groß ist, können Sie die Größe der unkomprimierten Datei bestimmen, um sie zu automatisieren. Es sieht ungefähr so aus:quelle
Oder mit
if
:zcat
wird manchmal mitgunzip -c
oder verknüpftgzip -cd
, wenn Sie es als kürzeres "Formular" verwenden möchten.quelle
Bitte beachten Sie, dass das gzip-Dateiformat nur 32 Bit zum Speichern der ursprünglichen Dateigröße zulässt, sodass die Nummer dort die Größe modulo 2 ^ 32 ist. Daher ist die durch "gzip -l" angegebene Größe kein endgültiger Test für die Leere.
quelle