在 Linux 中更改文件的第一个字节?

在 Linux 中更改文件的第一个字节?

如何在 Linux 中更改多个文件的第一个字节?愿意使用perl/ awk/ sed/whatever。这必须在二进制文件上正确工作(即不更改任何其他字节)。

答案1

你可以这样做,

echo -ne \\xFF | dd conv=notrunc bs=1 count=1 of=$YOURFILE

-n => 不输出尾随的换行符
-e => 启用反斜杠转义的解释

用你的十六进制值替换FF

不过,先尝试一下 :)

答案2

编译它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;
}

相关内容