不幸的是,所有基于shell扩展的解决方案都受到最大命令行长度的限制。哪个有所不同(可以
true | xargs --show-limits找出答案);在我的系统上,大约有2 MB。是的,许多人会争辩说它就足够了-一次比尔·盖茨就拥有640 KB的容量。
(在非共享文件系统上运行某些并行模拟时,在收集阶段,我有时确实在同一目录中有成千上万个文件。是的,我可以做不同的事情,但这恰恰是最简单,最可靠的方法收集数据。实际上,几乎没有POSIX实用程序足以愚蠢地假设“
X对每个人都足够”。)
幸运的是,有几种解决方案。一种是改为使用
find:
system("/usr/bin/find . -mindepth 1 -maxdepth 1 -type d");您还可以根据需要设置输出的格式,而不取决于语言环境:
system("/usr/bin/find . -mindepth 1 -maxdepth 1 -type d -printf '%pn'");如果要排序的输出,使用


