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

标签 bash loops file file-io

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

我目前正在尝试的是:

/xfs/*/中的目录;做 seq 1 1000000 | xargs -n1 -I% bash -c 'touch '$dir/file%' ;完成;

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

有没有更好的方法来实现这一点? (没有遇到 Argument list too long 问题)

TIA

最佳答案

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

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

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

关于bash - 在 bash 的 5,000 个目录中创建 5,000,000,000 个空文件的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63889740/

相关文章:

Linux 切字符串

linux - 在 shell 脚本中使用相同的命令,只是带有前缀

C 循环未正确迭代字符串

javascript - 如何使用 If/Loop 语句

python - 为什么标准 os 模块下没有 os.copy() ?

执行后台任务的脚本上的 bash 命令替换

c - for循环不会停止

file - 用普通的 lisp 读取文件

java - 保存游戏关卡设置

python - 将数组从 bash 传递到 python 参数