我有一个包含大约 320116 个 .pdb.gz 文件的文件夹。我想把它们全部解压。如果我使用gunzip *.gz,它会给我一个错误,即参数列表太长。该文件夹大约有2GB。请给我一个合适的建议。
答案1
find . -name '*.pdb.gz' -exec gunzip {} +
-exec gunzip {} +
将gunzip
在其命令行上提供许多但不是太多的文件名。这比为每个文件-exec gunzip {} \;
启动一个新进程更有效。gunzip
答案2
每当出现“参数列表太长”错误时,您可以通过多次调用所需的命令来解决该问题,每次都使用要使用的参数的子集。xargs
是一个可以帮助您自动完成此操作的工具。
find . -type f -a -name \*.pdb.gz -print0 | xargs -0 gunzip
答案3
我认为这应该可行,它将每个文件的路径/名称单独传递给gunzip进行处理:
find /my/dir -name "*.pdb.gz" -execdir gunzip "{}" \;
答案4
如果您有一台多核机器,您可能会发现使用它gunzip
并不会最大限度地发挥机器的功能。为此,您需要并行运行多个gunzip
。手动跟踪哪些操作在哪个终端中完成是很麻烦的,但您可以使用 GNU parallel 轻松做到这一点:
find . -name "*.gz" | parallel -X gunzip {}