在 bash 中的 5,000 个目录中创建 5,000,000,000 个空文件的最快方法

The*_*guy 2 bash file-io loops file

所以我需要在 linux 驱动器上创建 5,000,000,000 个文件 - 空文件。实现这一目标的最快/最有效的方法是什么?

我目前正在尝试:

for dir in /xfs/*/; do seq 1 1000000 | xargs -n1 -I% bash -c 'touch '$dir/file%' ; done;

这是“工作”,尽管非常缓慢。(在 5,000 个目录中创建 1,000,000 个文件)。

有没有更好的方法来实现这一点?(没有遇到参数列表太长的问题)

TIA

che*_*ner 8

touch是一个外部程序,您必须启动 5,000,000,000 次。你也跑了seq5000次。不要运行它们中的任何一个。

for dir in /xfs/*/; do
    for ((i=1; i <= 1000000; i++)); do
        : > "$dir/file$i"
    done
done
Run Code Online (Sandbox Code Playgroud)

这个循环是一个单独的 shell 命令,不会产生额外的进程;这:命令的输出重定向由当前壳,单一系统调用处理。

  • 如果你并行化内部 for 循环,也许会更快 (2认同)