![如何使用gunzip批量解压文件并保留原文件?](https://linux22.com/image/1355104/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8gunzip%E6%89%B9%E9%87%8F%E8%A7%A3%E5%8E%8B%E6%96%87%E4%BB%B6%E5%B9%B6%E4%BF%9D%E7%95%99%E5%8E%9F%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我在一个目录中有几个 txt.gz 文件,我想将它们一次性解压为一堆 .txt 文件,而不删除原始文件。但我不希望它们出现在标准输出中 - 使用 -c 选项即可实现。相反,我希望它们作为同一目录中的文件,只是使用 file.txt 类型的名称(可以使用 gunzip -c file.txt.gz > file.txt 完成)。有人有什么建议吗?谢谢!!
答案1
使用一个简单的 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"