Как пакетно распаковать файлы с помощью gunzip и сохранить оригиналы?

У меня есть несколько файлов txt.gz в каталоге, которые я хотел бы распаковать все в один, перейти к куче файлов.txt, не избавляясь от оригиналов. НО я не хочу их в стандартном выводе - как было бы достигнуто с опцией -c. Скорее, я хочу, чтобы они были файлами в одном каталоге, только с именем типа file.txt (как это можно сделать с помощью gunzip -c file.txt.gz > file.txt). У кого-нибудь есть предложения? Спасибо!!

2 ответа

Используйте простой цикл for:

 for i in *.txt.gz; do zcat "$i" > "${i%.*}"; done

zcat эквивалентно gunzip -c, но короче.

Переменная $i берет имена всех *.txt.gz файлы в текущем каталоге (один за другим). ${i%.*} раздвигает удлинитель (.gz) из имени файла.

Примечание: это синтаксис bash.

Вы можете использовать p7zip вместо gunzip, он сохранит ваши оригинальные архивные файлы.

7za e original.txt.gz

Чтобы распаковать несколько файлов, смотрите ответ @mpy.


Обновить

Согласно комментарию @Dennis, оберните подстановочный знак двойной кавычкой, p7zip извлечет все .txt.gz файлы.

7za e "*.txt.gz"
Другие вопросы по тегам