Как создать файлы с определенным шестнадцатеричным шаблоном в bash

Я пытаюсь создать много файлов (4 КБ ~ 10 МБ) с определенным 4-байтовым шестнадцатеричным шаблоном в bash.

Например,

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

Поэтому я сделал нулевые данные шаблона, используя «dd», и преобразовал их в определенный 4-байтовый шестнадцатеричный шаблон, как показано ниже.

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

но он возвращает только первый 1 байт данного шестнадцатеричного шаблона.

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

какой момент исправить?


person horyong.yoo    schedule 03.04.2017    source источник


Ответы (2)


Вы можете использовать перл

$ 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
...
person 123    schedule 03.04.2017

С прямым порядком байтов

printf '\x34\x12\x78\x56%.0s' {1..10} > File.bin
person DRC    schedule 03.04.2017
comment
Спасибо, но есть идеи, которые могут повысить производительность? Мне нужно сделать тысячи файлов МБ - person horyong.yoo; 03.04.2017
comment
извините, это неясно, тогда ответ @ 123 может быть правильным. - person DRC; 03.04.2017