如何以递归方式在随机位置创建 1 GB 的文件

如何以递归方式在随机位置创建 1 GB 的文件

我需要在我的文件系统的随机位置创建一堆 1 GB 的文件,并一遍又一遍地重复这个过程。我不在乎这些文件是否填充了随机数据或是否为空,我只需要用这些文件填充系统。我希望能够使用相同的名称创建它们。

如果有人有任何答案,请分享。谢谢。

答案1

此命令将在文件系统的随机位置创建 10 个文件,每个文件大小为 1GB:

find / -mount -type d -print0 2>/dev/null | 
    shuf -zn 10 | 
        while IFS= read -r -d '' dir; do 
            sudo fallocate -l 1G "$dir"/evilFile && 
            echo "Created $dir/evilFile"; 
        done

解释

  • find / -mount -type d -print0 2>/dev/null:查找目录中的所有目录/-moun指示find不要进入已安装的文件系统。这是可选的,但如果您有任何已安装的网络共享或类似内容,则这是一个好主意。然后, 表示-print0“以 NULL ( \0) 而不是换行符 ( \n) 结束每行”。如果您找到的任何目录名称包含换行符,则需要这样做。最后, 表示2>/dev/null丢弃有关无权读取目录的错误消息。您也可以通过find以 root 身份运行命令来避免这种情况,但如果不进入系统目录,这已经足够危险了。
  • shuf -zn 10:随机选择 10 行。-zletshuf处理以 NULL 结尾的行。
  • while IFS= read -r -d '' dir; do:读取每个以空字符结尾的行,将每个目录保存为$dir...
  • sudo fallocate -l 1G "$dir"/evilFile:在该目录中创建一个1G的文件。

相关内容