Как я могу изменить первый байт нескольких файлов в Linux? Готов использовать perl
/awk
/sed
/что угодно. Это должно корректно работать с двоичными файлами (то есть не изменять любые другие байты).
2 ответа
11
Вы можете сделать что-то вроде echo -ne \\xFF | dd conv=notrunc bs=1 count=1 of=YOURFILE
, заменяя FF на ваше шестнадцатеричное значение. Попробуйте сначала хотя :)
-1
скомпилируйте это с помощью gcc -o w1stb w1stb.c
и используйте его следующим образом ./w1stb <file> <byte>
:
#include <stdio.h>
int main(int argc, const char *argv[]) {
int i;
FILE* f;
unsigned char b;
if (argc < 3) {
printf("usage: w <filename> <byte>\n");
return 1;
}
i = atoi(argv[2]);
if (i < 0) {
printf("error, negative byte\n");
return 2;
}
if (i > 255) {
printf("error, to big byte\n");
return 3;
}
f = fopen(argv[1], "w");
if (!f) {
printf("error, can't open file\n");
return 4;
}
b = (unsigned char)i;
fwrite(&b, 1, 1, f);
fclose(f);
return 0;
}