Есть ли быстрый способ проверить, является ли файл gzip пустым, или я должен сначала распаковать его?
пример:
$ 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
кендырь
источник
источник
LC_ALL=C
что gzip не помещает тысячи разделителей в числа, чтобы поле можно было сравнить с нулем?LC_ALL=C
не повредит.read
которая вызывается в подоболочке (и$line
не распространяется на родительский объект ).tr
исправляет.Если под «пустым» вы подразумеваете, что несжатый файл имеет
gzip --list foo.gz
размер 0 байт, вы можете использовать его для определения размера несжатого файла, для его автоматизации потребуется некоторый анализ. Это выглядит примерно так:источник
Или с
if
:zcat
иногда связано сgunzip -c
илиgzip -cd
, если вы хотите использовать его в качестве более короткой «формы».источник
Обратите внимание, что формат файла gzip позволяет хранить только 32 бита для хранения исходного размера файла, поэтому число там равно модулю 2 ^ 32. Следовательно, размер, указанный в «gzip -l», не является окончательным тестом на пустоту.
источник