2010-06-04 57 views
1

文件我經常會創建一個特定大小的文件一招類似如何「零」與1的

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或隨機?

回答

2

對於隨機數據,在幾乎所有情況下使用/dev/urandom。 (您也可以使用/dev/random,但這是非常非常慢,因爲它的熵結合urandom是一個PRNG其自身的種子從random。)

對於非零的文件,我建議是這樣的:

perl -e 'print chr(0xff) x 1000' > t 

顯然,自定義0xff和1000的味道。

+1

'python -c「print chr(0x31)* 1000」> t' Samething only python flavored。 – zdav 2010-06-04 21:55:50

-2

在dd後面添加另一個命令。

sed 's/0/1/g' file.txt 

它將用1代替所有的0。

可能是一個更好的解決方案在那裏,但應該工作:-)

編輯:你居然要管的結果從進入任一新文件或替換同一文件。 SED打印默認屏幕(IIRC)

+0

不知長sed如何將採取1GB的文件。 – DVK 2010-06-04 19:25:26

+11

這是錯誤的。/dev/zero的所有位爲零(0x00)。您的sed命令正在查找ASCII 0數字(0x30)。 – 2010-06-04 19:28:13

1

這隻要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 
+1

+1爲了創造性:] – DRL 2010-06-07 10:56:17