Как я могу извлечь несколько файлов GZIP в каталог и подкаталоги?

10

Я пробовал оба gzipи gunzipкоманды, но я получаю либо

gunzip *.gz 
gzip: invalid option -- 'Y' 

gunzip -S-1800-01-01-000000-g01.h5.gz  
gzip: compressed data not read
 from a terminal. Use -f to force decompression. For help, type: gzip -h

Если я попробую эту -fопцию, потребуется очень много времени для работы с одним файлом, и команда не будет выполнена успешно. Я что-то пропустил?

Герман Зуб
источник
1
Содержит ли каталог файлы .gz, имена которых начинаются с дефисов, например -Y.something.gz? Если это так, вам может понадобиться использовать --флаг Gnu, чтобы гарантировать, что они обрабатываются как имена файлов, а не как опции, напримерgunzip -- *.gz
steeldriver
@steeldriver Да, у меня есть несколько файлов, начинающихся с -
Герман Тутрот
это вызвало по крайней мере одну из двух проблем.
Герман Тутрот

Ответы:

16

Вы можете использовать приведенную ниже команду.

Перейдите в каталог, где находится ваш .gzфайл, и выполните команду:

for f in *.gz ; do gunzip -c "$f" > /home/$USER/"${f%.*}" ; done

Он извлечет весь файл с оригинальным именем и сохранит его в домашнем каталоге текущего пользователя ( /home/username). Вы можете изменить это где-нибудь еще.

РЕДАКТИРОВАТЬ :

gunzip *.gz

Эта команда также будет работать. Но по умолчанию он заменяет оригинальный файл.

pl_rock
источник
Вы читали, что я написал в моем вопросе? gunzip * .gz у меня не работает. Но цикл работает, я озадачен.
Герман Тутрот
но это работает для меня и других также, почему показывает `неверный параметр - 'Y'`. Я думаю, что либо ваш формат файла не в порядке, или вы упускаете что-то в команде.
pl_rock
4

Вариант № 1 : разархивировать несколько файлов, используя одинарные кавычки

gunzip '*.gz'

Обратите внимание, что *.gzслово помещается между двумя одинарными кавычками, поэтому оболочка не распознает его как символ подстановки.

Вариант № 2 : разархивировать несколько файлов с помощью оболочки для цикла (длинная версия)

for g in *.gz; do gunzip $g; done

Источник

РЕДАКТИРОВАТЬ :

Я только что попробовал:

gunzip -dk *.gz

и это сработало.

-dраспаковать и kсохранить оригинальные файлы.

Билал
источник
Вы проверили gunzip ‘*.gz’ эту команду? я не могу запустить эту команду. это дает ошибку.
pl_rock
gunzip '*.gz'не используйте gunzip ‘*.gz’ ( ' 'не `'` `)
Bilal
Я просто копирую вставку вашей команды, и она дает gzip: *.gz: No such file or directoryновую, также не работает. ты пробовал?
pl_rock
Это не работает gunzip '* .gz' gzip: * .gz: Нет такого файла или каталога
Herman Toothrot
Извините, я не пробовал это! Я сейчас на Windows :(
Билал
0

Пользователи Linux:

Используйте следующую команду для извлечения минимального количества файлов .gz в текущем каталоге и его подкаталогах

gunzip *.gz

Используйте следующую команду для извлечения любого количества файлов .gz в текущем каталоге и его подкаталогах

sudo find . -name "*.gz" | xargs gunzip
kmsvignesh
источник