Subtrair arquivos binários

3

Eu tenho 2 arquivos binários FileA e FileC

É assim que FileC = FileA + FileB usando o utilitário cat

Como faço para subtrair FileA de FileC para obter FileB ?

PS: Eu estou usando o Ubuntu Oneiric

    
por Gautam 14.01.2012 / 13:17

2 respostas

3

Assumindo que você tem stat no seu plateform para obter o tamanho de FileA , você poderia fazer algo como:

dd if=./FileC of=./FileB bs=1 skip=$(stat -c %s ./FileA)

que deve funcionar em qualquer tipo de arquivo.

    
por 14.01.2012 / 13:42
1

Você precisa saber onde cortar. Para arquivos binários, isso geralmente significa saber o tamanho de FileA ou FileB .

Você pode encontrar o tamanho de FileA com ls -l . Se você precisar escrever um script portátil, poderá extrair o tamanho com ls -lgo FileA | awk '{print $3; exit}' (ou, para versões não compatíveis com POSIX de ls que não tenham as opções -g e -o , ls -l FileA | awk '{print $5; exit}' ). No Linux não embarcado, uma maneira mais simples de obter o tamanho é stat -c %s FileA .

Depois de ter o tamanho, você pode usar tail para extrair a segunda parte do arquivo:

tail -c +$((sizeA + 1)) <FileC

Se você quiser dividir um arquivo em partes iguais, use o comando split .

    
por 15.01.2012 / 02:34

Tags