gunzip 一个包含许多文件的文件夹

use*_*015 6 shell gzip

我有一个包含 36,348 个文件 gz 文件的文件夹。我想全部解压缩。

跑步:

gunzip ./*
Run Code Online (Sandbox Code Playgroud)

结果是

-bash: /usr/bin/gunzip: Argument list too long
Run Code Online (Sandbox Code Playgroud)

解决这个问题的最简单方法是什么?

cuo*_*glm 12

尝试:

find . -type f -exec gunzip {} +
Run Code Online (Sandbox Code Playgroud)

这假设当前目录仅包含您要解压缩的文件。

  • `找到。-type f -iname "*.gz" -exec gunzip {} +` 只匹配以 `.gz` 结尾的文件,忽略大小写。 (3认同)

Sté*_*las 7

限制在内​​核中,取决于传递给execve()用于执行命令的系统调用的参数和环境的累积大小。您可以将其拆分为多个调用。

到当前目录下的gunzip所有.gz文件:

zsh

autoload zargs # best in ~/.zshrc
zargs ./*.gz -- gunzip
Run Code Online (Sandbox Code Playgroud)

ksh93

command -x gunzip ./*.gz
Run Code Online (Sandbox Code Playgroud)

GNUly:

printf '%s\0' *.gz | xargs -r0 gunzip
Run Code Online (Sandbox Code Playgroud)

POSIXly(和gunzip):

find . ! -name . -prune -name '*.gz' -exec gunzip {} +
Run Code Online (Sandbox Code Playgroud)

(请注意,也会解压缩隐藏.gz文件)

或者您可以在某些系统上提高该限制。在最新版本的 Linux 上:

ulimit -s unlimited
gunzip ./*.gz
Run Code Online (Sandbox Code Playgroud)


小智 5

我发现的最简单的方法是:

gunzip -r .
Run Code Online (Sandbox Code Playgroud)