如何提取目录和子目录中的多个gzip文件?


11

我已经尝试过gzipgunzip命令,但我得到了

gunzip *.gz 
gzip: invalid option -- 'Y' 

gunzip -S-1800-01-01-000000-g01.h5.gz  
gzip: compressed data not read
 from a terminal. Use -f to force decompression. For help, type: gzip -h

如果尝试使用该-f选项,则需要花费很长时间才能处理一个文件,并且命令无法成功执行。我想念什么吗?


2
目录中是否包含以连字符开头的.gz文件,例如-Y.something.gz?如果是这样,您可能需要使用Gnu --标志来确保将它们视为文件名而不是选项,例如gunzip -- *.gz
steeldriver 2015年

@steeldriver是的,我确实有一些以-开头的文件
Herman Toothrot 2015年

导致至少两个问题之一。
Herman Toothrot,2015年

Answers:


16

您可以使用以下命令。

转到.gz文件所在的目录并运行命令:

for f in *.gz ; do gunzip -c "$f" > /home/$USER/"${f%.*}" ; done

它将提取所有具有原始名称的文件,并将其存储到当前用户的主目录(/home/username)。您可以将其更改为其他位置。

编辑:

gunzip *.gz

此命令也将起作用。但是,默认情况下,它将替换原始文件。


您读过我在问题中写的内容吗?gunzip * .gz对我不起作用。但是for循环有效,我感到困惑。
Herman Toothrot,2015年

但是它对我和其他人都起作用,为什么还要显示`invalid option-'Y'`。我认为您的文件格式不正确或您在命令中缺少某些内容。
pl_rock


4

选项1:使用单引号将多个文件解压缩(简短版本)

gunzip '*.gz'

请注意,*.gz单词放在两个单引号之间,因此shell不会将其识别为通配符。

选项2:使用Shell循环解压缩多个文件(长版)

for g in *.gz; do gunzip $g; done

来源

编辑:

我刚刚尝试过:

gunzip -dk *.gz

而且有效。

-d解压缩并k保留原始文件。


你检查过gunzip ‘*.gz’ 这个命令了吗?我无法运行此命令。它给了错误。
pl_rock 2015年

gunzip '*.gz'不要使用gunzip ‘*.gz’ ' '
not`'``

我只是复制粘贴您的命令,它给gzip: *.gz: No such file or directory新也无法正常工作。你尝试过吗?
pl_rock 2015年

它不起作用gunzip'*
.gz'gzip

抱歉,我没有尝试!我现在在Windows上:(
Bilal

0

Linux用户:

使用以下命令在当前目录及其子目录中提取最少数量的.gz文件

gunzip *.gz

使用以下命令在当前目录及其子目录中提取任意数量的.gz文件

sudo find . -name "*.gz" | xargs gunzip
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.