Czy istnieje szybki sposób sprawdzenia, czy plik spakowany gzipem jest pusty, czy najpierw muszę go rozpakować?
przykład:
$ 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
źródło
źródło
LC_ALL=C
czy istnieje pewność, że gzip nie wstawi tysięcy separatorów w liczbach, aby pole można było porównać do zera?LC_ALL=C
nie może zranić.read
jest wywoływana w podpowłoce (i$line
nie jest propagowana do elementu nadrzędnego).tr
naprawia.Jeśli przez „pusty” rozumiesz, że nieskompresowany plik ma 0 bajtów, możesz użyć go
gzip --list foo.gz
do określenia rozmiaru nieskompresowanego pliku, jego zautomatyzowanie wymagałoby parsowania. Wygląda to mniej więcej tak:źródło
Lub z
if
:zcat
jest czasem powiązany zgunzip -c
lubgzip -cd
, jeśli chcesz użyć go jako krótszego „formularza”.źródło
Należy pamiętać, że format pliku gzip pozwala tylko na 32 bity do przechowywania oryginalnego rozmiaru pliku, więc liczba jest wielkości modulo 2 ^ 32. Dlatego rozmiar podany przez „gzip -l” nie jest ostatecznym testem na pustkę.
źródło