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

2404
Paulina

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

0

2 ответа на вопрос

3
mpy

Use a simple for loop:

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

zcat is equivalent to gunzip -c, but shorter.

The variable $i takes the names of all *.txt.gz files in the current directory (one after the other). $ strips the extension (.gz) from the file's name.

Note: This is bash syntax.

Ну, это не восстановит сохраненное время. Если вы хотите этого, вместо этого выделите временный каталог, а затем скопируйте туда файл .txt.gz, а затем распакуйте его с помощью `gzip -d` и затем переместите` .txt` назад, повторите для каждого `.txt.gz` и затем, когда закончите, удалите временный каталог. Dan D. 11 лет назад 1
@DanD .: Использование `touch -r` намного проще. Dennis 11 лет назад 2
2
LiuYan 刘研

You can use p7zip instead of gunzip, it will keep your original archive files.

7za e original.txt.gz

To decompress multiple files, see @mpy's answer.


Update

As per @Dennis's comment, wrap wildcard with double quotation mark, p7zip will extract all .txt.gz files.

7za e "*.txt.gz" 
Если вы уже используете 7-Zip, просто выполните `7za e" * .txt.gz "`. Dennis 11 лет назад 1
@ Денис, приятно это знать. LiuYan 刘研 11 лет назад 0

Похожие вопросы