如何在 bash 中制作具有特定十六进制模式的文件

How to make files with specific hex pattern in bash

我正在尝试在 bash

中制作许多具有特定 4 字节十六进制模式的文件 (4KB~10MB)

例如,

0000000: 1234 5678 1234 5678 1234 5678 1234 5678 ....

所以我使用 'dd' 制作了零模式数据并将其转换为特定的 4 字节十六进制模式,如下所示

dd if=/dev/zero bs=1k 计数=10 | tr "\000" $'\x12345678' > File.bin

但它 returns 只是给定十六进制模式的前 1 个字节。

0000000 : 1212 1212 1212 1212 1212 1212 1212 1212 ....

我应该修复哪一点?

在小端

printf '\x34\x12\x78\x56%.0s' {1..10} > File.bin

你可以使用 perl

$ dd if=/dev/zero bs=1k count=10 | perl -0777 -pe "s/\x00{4}/\x12\x34\x56\x78/g" > file.bin

$ xxd file.bin 

0000000: 1234 5678 1234 5678 1234 5678 1234 5678  .4Vx.4Vx.4Vx.4Vx
0000010: 1234 5678 1234 5678 1234 5678 1234 5678  .4Vx.4Vx.4Vx.4Vx
...