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

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

我已经尝试了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选项,则需要很长时间才能处理单个文件,并且命令无法成功执行。我是否遗漏了什么?

答案1

您可以使用以下命令。

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

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

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

编辑 :

gunzip *.gz

此命令同样有效。但是,默认情况下,它会替换原始文件。

答案2

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

gunzip '*.gz'

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

选项 # 2:使用 shell for 循环解压多个文件(长版本)

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

来源

编辑 :

我刚刚尝试过:

gunzip -dk *.gz

并且它成功了。

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

答案3

Linux 用户:

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

gunzip *.gz

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

sudo find . -name "*.gz" | xargs gunzip

相关内容