来自标准输入的gunzip

来自标准输入的gunzip

我有大量的 gz 文件。我想把它们全部提取出来。这是我试图做的:

find . | grep .gz | gunzip

但是,gunzip 不接受来自 stdinput 的文件列表。我怎样才能将它们全部解压(就地)?

答案1

如果您想要调用gunzip名称以.gz当前目录中任何位置结尾的每个文件,则应该这样做:

find . -type f -name '*.gz' exec gunzip {} +

将标准输入上的内容转换为命令参数的更通用方法是使用 xargs,但该命令有一些需要注意的问题。

答案2

也许更好的方法是使用find's-name-execoptions?这样 grep 就没有必要了,它可以将每个匹配的文件gunzip单独传递给 , 。

这看起来像:

find . -name '*.gz' -exec gunzip '{}' +

$CWD(包括子目录)中名称以 结尾的所有文件都.gz将被交给gunzip解压。此外,解压后的文件将最终出现在$CWD不采取进一步措施的情况下。

相关内容