我需要在我的文件系统的随机位置创建一堆 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 行。-z
letshuf
处理以 NULL 结尾的行。while IFS= read -r -d '' dir; do
:读取每个以空字符结尾的行,将每个目录保存为$dir
...sudo fallocate -l 1G "$dir"/evilFile
:在该目录中创建一个1G的文件。