gunzip wszystkie pliki .gz w katalogu

24

Mam katalog z dużą ilością .txt.gzplików (w których nazwy nie są zgodne z określonym wzorcem).

Jaka jest najprostsza droga do gunzipnich? Chcę zachować ich oryginalne nazwy, aby przechodzili od whatevz.txt.gzdowhatevz.txt

The Unfun Cat
źródło

Odpowiedzi:

42

Co powiesz na to?

$ gunzip *.txt.gz

gunziputworzy plik typu gunzip bez .gzsufiksu i domyślnie usunie oryginalny plik (szczegóły poniżej). *.txt.gzzostanie rozwinięty przez twoją powłokę do wszystkich pasujących plików.

Ten ostatni bit może sprawić kłopoty, jeśli rozwinie się do bardzo długiej listy plików. W takim przypadku spróbuj użyć findi -execwykonać zadanie za Ciebie.


Ze strony podręcznika gzip(1):

gunzip takes a list of files on its command line and  replaces  each  file
whose  name  ends  with  .gz, -gz, .z, -z, or _z (ignoring case) and which
begins with the correct magic number with an uncompressed file without the
original  extension.

Uwaga na temat „oryginalnej nazwy”

gzip może przechowywać i przywracać nazwę pliku używaną podczas kompresji. Nawet jeśli zmienisz nazwę skompresowanego pliku, możesz być zaskoczony tym, że przywraca on pierwotną nazwę.

Z strony podręcznika gzip:

Domyślnie gzip zachowuje oryginalną nazwę pliku i znacznik czasu w skompresowanym pliku. Są one używane podczas dekompresji pliku z -Nopcją. Jest to przydatne, gdy nazwa skompresowanego pliku została obcięta lub gdy znacznik czasu nie został zachowany po przesłaniu pliku.

Te nazwy plików przechowywane w metadanych można również wyświetlać za pomocą file:

$ echo "foo" > myfile_orig
$ gzip myfile_orig 
$ mv myfile_orig.gz myfile_new.gz 
$ file myfile_new.gz 
myfile_new.gz: gzip compressed data, was "myfile_orig", last modified: Mon Aug  5 08:46:39 2019, from Unix
$ gunzip myfile_new.gz        # gunzip without -N
$ ls myfile_*
myfile_new

$ rm myfile_*
$ echo "foo" > myfile_orig
$ gzip myfile_orig
$ mv myfile_orig.gz myfile_new.gz 
# gunzip with -N
$ gunzip -N myfile_new.gz     # gunzip with -N
$ ls myfile_*
myfile_orig
gertvdijk
źródło
0

Jeśli chcesz zachować .gzplik, możesz użyć: $ gunzip -c inputfile.gz >outputfile

suma
źródło
0

Użyj tego polecenia, aby spakować (rozpakować pliki gz) wszystkie pliki w bieżącym katalogu i zachować oryginalne:

gunzip -k *.gz
gansvv
źródło