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.
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 ?
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 .