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


80

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

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


一个.gz文件不一定是归档。在这种情况下,演奏时您将没有任何要删除的内容gzip -d file.gz
devnull

我投票结束这个问题是因为题外,因为它属于unix.stackexchange.com
Shankar Damodaran

Answers:


168

应该这样做:

gunzip *.gz

1
...除非那给你一个“太大的错误”。在这种情况下,您需要使用类似的find "$dir" -maxdepth 1 -name '*.gz' -print0 | xjobs -0 -l50 -v2 gunzip方法将实例限制为每个参数50个(并并行运行)。
Toby Speight

22

@techedemic是正确的,但缺少'。提及当前目录,并且此命令遍历所有子目录。

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

19

显然,有多种方法可以做到这一点。

    # 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在适用的目录中执行


3

提取当前目录及其子目录中的所有gz文件:

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

3

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

gunzip file.gz

它将解压缩文件并删除.gz文件。



0

尝试:

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 ”来找出这些命令和参数的作用。或者,您可以在线研究。

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.