[英]How to “zero” a file with 1's
我经常会用一些技巧创建一个特定大小的文件
dd if=/dev/zero of=1gb.dd bs=1M count=1024
甚至
dd if=/dev/urandom of=1gb.dd bs=1M count=1024
dd if=/dev/random of=1gb.dd bs=1M count=1024
但是,如果我想获得全1而不是0或随机数怎么办?
对于随机数据,几乎在所有情况下都使用/dev/urandom
。 (您也可以使用/dev/random
,但这要慢得多,因为它受熵限制urandom
是一种PRNG,可从random
种子中自行繁殖。)
对于非零文件,我建议如下所示:
perl -e 'print chr(0xff) x 1000' > t
显然,自定义0xff和1000进行品尝。
这大约是dd if=/dev/zero
四倍,但仅比crazyscot的答案中的Perl命令稍长 :
touch shred.out; yes $'\xff' | tr -d $'\n' | shred --random-source=/dev/stdin --size=1G --iterations=1 shred.out
有趣的是,此类似命令在达到1 GB之前就已停止:
yes $'\xff' | tr -d $'\n' | dd if=/dev/stdin of=1gb.dd bs=1M count=1024
在dd之后在该位置添加另一个命令。
sed 's/0/1/g' file.txt
它将全部0替换为1。
可能是一个更好的解决方案,但是应该可以:-)
编辑:实际上,您实际上必须将结果从管道传输到新文件或替换相同文件。 sed默认情况下会打印到屏幕(IIRC)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.