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
touch
是一个外部程序,您必须启动 5,000,000,000 次。你也跑了seq
5000次。不要运行它们中的任何一个。
for dir in /xfs/*/; do
for ((i=1; i <= 1000000; i++)); do
: > "$dir/file$i"
done
done
Run Code Online (Sandbox Code Playgroud)
这个循环是一个单独的 shell 命令,不会产生额外的进程;这:
命令的输出重定向由当前壳,单一系统调用处理。