Как пакетно распаковать файлы с помощью 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"