Bash:替换二进制文件中的一些字节

时间:2012-04-26 01:55:31

标签: bash dd

我有一个二进制文件zero.bin,其中包含10个字节的0x00,以及一个数据文件data.bin,其中包含5个字节的0x01。我想用zero.bin替换zero.bin的前5个字节。我试过了

dd if=data.bin of=zero.bin bs=1 count=5

但是,zero.bin被截断,最后变成5个字节的0x01。我想保留拖尾5字节的0x00。

3 个答案:

答案 0 :(得分:9)

没问题,只需添加conv=notrunc

dd if=data.bin of=zero.bin bs=1 count=5 conv=notrunc

答案 1 :(得分:1)

你有一半的解决方案;将其转换为临时文件tmp.bin而不是zero.bin,然后

dd if=zero.bin bs=1 seek=5 skip=5 of=tmp.bin
mv zero.bin old.bin # paranoia
mv tmp.bin zero.bin

答案 2 :(得分:0)

不要停止使用dd(1)。还有其他工具,例如:

(cat data.bin && tail -c +5 zero.bin) > updated.bin