【发布时间】:2011-05-10 06:13:15
【问题描述】:
我最近一直在复制和移动大量文件(约 400,000 个)。我知道在 Bash 命令行上可以扩展的参数数量是有限制的,所以我一直使用 xargs 来限制产生的数量。
出于好奇,我想知道我可以使用的最大参数数量是多少,我发现 this post 说它是系统相关的,我可以运行这个命令来找出答案:
$ getconf ARG_MAX
令我惊讶的是,我得到的答案是:
2621440
刚刚超过 260 万。正如我所说,我正在处理的文件数量比这要少得多——大约 400k。我肯定需要使用xargs 方法来移动和复制这些文件,因为我尝试使用普通的mv * ... 或cp * ... 并得到一个“参数列表太长”的错误。
那么,mv 和 cp 命令是否对我可以使用的参数数量有自己的固定限制(我在他们的手册页中找不到任何内容),还是我遗漏了什么?
【问题讨论】:
-
为什么要指定每个文件?你不能只指定他们所在的目录或类似的东西吗?
-
@Christoffer 我不只是将目录从一个地方复制到另一个地方,我还在复制特定文件、重命名文件束、将某些文件从一个地方移动到另一个地方。我在实际执行这些操作时没有问题。我只是好奇
cp和mv命令的具体限制是什么。
标签: linux bash command-line-arguments