提取并删除目录中的所有.gz - Linux

Posted

技术标签:

【中文标题】提取并删除目录中的所有.gz - Linux【英文标题】:Extract and delete all .gz in a directory- Linux 【发布时间】:2013-04-08 22:04:12 【问题描述】:

我有一个目录。它有大约 500K .gz 文件。

如何提取该目录中的所有 .gz 并删除 .gz 文件?

【问题讨论】:

.gz 文件不一定是存档。在这种情况下,您在执行gzip -d file.gz 时不会删除任何内容。 我投票结束这个问题,因为它属于unix.stackexchange.com 【参考方案1】:

应该这样做:

gunzip *.gz

【讨论】:

... 除非这会给您一个“参数太大”的错误。在这种情况下,您需要使用 find "$dir" -maxdepth 1 -name '*.gz' -print0 | xjobs -0 -l50 -v2 gunzip 之类的东西来将实例限制为每个 50 个参数(并并行运行它们)。【参考方案2】:

@techedemic 是正确的,但缺少 '.'提到当前目录,这个命令会遍历所有子目录。

find . -name '*.gz' -exec gunzip '' \;

【讨论】:

【参考方案3】:

显然有不止一种方法可以做到这一点。

    # This will find files recursively (you can limit it by using some 'find' parameters. 
    # see the man pages
    # Final backslash required for exec example to work
    find . -name '*.gz' -exec gunzip '' \;

    # This will do it only in the current directory
    for a in *.gz; do gunzip $a; done

我相信还有其他方法,但这可能是最简单的。

要删除它,只需在适用目录中执行rm -rf *.gz

【讨论】:

【参考方案4】:

解压当前目录及其子目录下的所有gz文件:

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

【讨论】:

【参考方案5】:

如果要提取单个文件,请使用:

gunzip 文件.gz

它将提取文件并删除 .gz 文件。

【讨论】:

【参考方案6】:
for foo in *.gz
do
  tar xf "$foo"
  rm "$foo"
done

【讨论】:

【参考方案7】:

试试:

ls -1 | grep -E "\.tar\.gz$" | xargs -n 1 tar xvfz

然后尝试:

ls -1 | grep -E "\.tar\.gz$" | xargs -n 1 rm

这将解压当前目录中的所有 .tar.gz 文件,然后删除所有 .tar.gz 文件。如果你想解释,“|”获取之前命令的标准输出,并将其用作之后命令的标准输入。使用不带引号的“man command”来确定这些命令和参数的作用。或者,您可以在线研究。

【讨论】:

以上是关于提取并删除目录中的所有.gz - Linux的主要内容,如果未能解决你的问题,请参考以下文章

想要删除linux中的zookeeper 有啥注意的地方没

linux 怎么压缩某个目录下的所有文件

Python提取Linux内核源代码的目录结构

linux命令学习

虚拟机里linux打包压缩等命令问题 重酬~

linux中find与rm实现查找并删除目录或文件