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