bash - 参数列表太长了

Lea*_*wly 0 bash

我有~5k文件,我想解压缩.

2:13:35 2017-01-16 $ unpigz *.gz
-bash: /usr/local/bin/unpigz: Argument list too long
12:13:40 2017-01-16 $ unpigz -r *.gz
-bash: /usr/local/bin/unpigz: Argument list too long
12:15:45 2017-01-16 $ gunzip *.gz
-bash: /usr/bin/gunzip: Argument list too long
12:17:56 2017-01-16 $ cp *.gz ~/Desktop/
-bash: /bin/cp: Argument list too long
Run Code Online (Sandbox Code Playgroud)

bash可以处理的文件数量是否有计数限制?

che*_*ner 5

限制不在于参数的数量,而在于命令行和环境的组合长度.(非正式地,这意味着环境中的字符串越多,命令行就越短.)此限制特定于操作系统,而不是任何特定命令.要解决此问题,请使用find重复调用命令.

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

这里,gunzip将使用尽可能多的参数调用,并重复调用,直到所有匹配的文件都已解压缩.