代码之家  ›  专栏  ›  技术社区  ›  coolaj86

如何“归零”带有1的文件

  •  1
  • coolaj86  · 技术社区  · 14 年前

    我经常用一个技巧创建一个特定大小的文件

    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或随机的呢?

    3 回复  |  直到 14 年前
        1
  •  2
  •   crazyscot    14 年前

    对于随机数据,几乎在所有情况下都使用 /dev/urandom . (您也可以使用 /dev/random 但这要慢得多,因为它是熵束缚的。 urandom 是自我播种的种子 random )

    对于非零文件,我建议如下:

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

    显然,定制0xFF和1000来品尝。

        2
  •  1
  •   Dennis Williamson    14 年前

    这要花大约四倍的时间 dd if=/dev/zero ,但只比中的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
    
        3
  •  -2
  •   Paul    14 年前

    在你的dd后面添加另一个命令。

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

    它将用1替换所有的0。

    可能是一个更好的解决方案,但这应该是可行的:—)

    编辑:实际上,您必须将结果通过管道传输到新文件或替换相同的文件中。SED默认打印到屏幕(IIRC)