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

2 ответа2

3

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

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

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

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

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

2

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

7za e original.txt.gz

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


Обновить

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

7za e "*.txt.gz"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .