如何使用gunzip批量解压缩文件并保留原件?


0

我在一个目录中有几个txt.gz文件,我想一次解压缩到一堆.txt文件而不删除原件。但我不希望它们在标准输出中 - 就像使用-c选项一样。相反,我希望它们作为同一目录中的文件,只需使用file.txt类型名称(可能使用gunzip -c file.txt.gz> file.txt)。可能有人有什么建议吗?谢谢!!

Answers:


3

使用简单的for循环:

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

zcat 相当于 gunzip -c,但更短。

变量 $i 取名所有 *.txt.gz 当前目录中的文件(一个接一个)。 ${i%.*} 剥离扩展( .gz )从文件的名称。

注意 :这是bash语法。


1
好吧,这不会恢复已保存的mtime。如果你想要它,而是分配一个临时目录,然后复制 .txt.gz 那里然后解压缩 gzip -d 然后移动 .txt 回来,重复每一个 .txt.gz 然后在完成后删除临时目录。
Dan D.

2
@DanD。:使用 touch -r 更简单。
Dennis

2

您可以使用 的p7zip 而不是gunzip,它将保留您的原始存档文件。

7za e original.txt.gz

要解压缩多个文件,请参阅@ mpy的答案。


更新

根据@Dennis的评论,用双引号包装通配符,p7zip将提取所有 .txt.gz 文件。

7za e "*.txt.gz"

1
如果您已经在使用7-Zip,那就行了 7za e "*.txt.gz"
Dennis

@Dennis,很高兴知道。
LiuYan 刘研
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.