Altera o primeiro byte do arquivo no Linux?

6

Como posso alterar o primeiro byte de vários arquivos no Linux? Disposto a usar perl / awk / sed / whatever. Isso deve funcionar corretamente em arquivos binários (isto é, não alterar nenhum outro byte).

    
por jnylen 17.03.2010 / 17:57

2 respostas

11

Você pode fazer algo como echo -ne \xFF | dd conv=notrunc bs=1 count=1 of=YOURFILE , substituindo FF pelo seu valor hexadecimal. Tente primeiro embora:)

    
por 17.03.2010 / 18:56
-1

compile isso com gcc -o w1stb w1stb.c e use-o como ./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;
}
    
por 17.03.2010 / 18:58

Tags