gunzip все файлы .gz в каталоге

24

У меня есть каталог с большим количеством .txt.gzфайлов (где имена не соответствуют определенному шаблону.)

Какой самый простой путь к gunzipним? Я хочу , чтобы сохранить свои оригинальные имена, так что они идут от whatevz.txt.gzдоwhatevz.txt

Несчастный кот
источник

Ответы:

42

Как насчет этого?

$ gunzip *.txt.gz

gunzipсоздаст заархивированный файл без .gzсуффикса и удалит исходный файл по умолчанию (подробности см. ниже). *.txt.gzбудет расширен вашей оболочкой для всех соответствующих файлов.

Этот последний бит может привести к неприятностям, если он расширится до очень длинного списка файлов. В этом случае попробуйте использовать findи -execсделать работу за вас.


Со страницы руководства 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.

Примечание об «оригинальном имени»

gzip может хранить и восстанавливать имя файла, используемое во время сжатия. Даже если вы переименуете сжатый файл, вы можете быть удивлены, обнаружив, что он снова восстанавливает исходное имя.

Из справочной страницы gzip:

По умолчанию gzip сохраняет исходное имя файла и метку времени в сжатом файле. Они используются при распаковке файла с -Nопцией. Это полезно, когда сжатое имя файла было усечено или когда метка времени не была сохранена после передачи файла.

И эти имена файлов, хранящиеся в метаданных, также можно просматривать с помощью 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
источник
0

Если вы хотите сохранить .gzфайл, вы можете использовать следующее: $ gunzip -c inputfile.gz >outputfile

sumion
источник
0

Используйте эту команду, чтобы заархивировать (распаковать файлы gz) все файлы в текущем каталоге и сохранить исходные:

gunzip -k *.gz
gansvv
источник