Com cat file_b >> file_a , você está apenas anexando o conteúdo de file_b a file_a . Nenhuma alteração de formato, nenhuma outra manipulação (1) (2).
Você pode voltar apenas removendo os últimos bytes dos arquivos; provavelmente algo como
head --bytes=-$(wc --bytes file_b | cut -d" " -f1) file_a > old_file_a
deve funcionar.
Explicação:
wc --bytes file_b
retorna o comprimento de file_b em bytes (e o nome dos arquivos, como " 5678 file_b ")
wc --bytes file_b | cut -d" " -f1
elimina o nome do arquivo na saída de wc mantendo apenas o primeiro campo (" 5678 "). Em seguida, usamos uma substituição de processo para colocar esse número como um argumento para head :
head --bytes=-5678 file_a
exibe todo o conteúdo de file_a mas os últimos 5678 bytes.
Notas de rodapé:
(1) No exemplo do OP, duvido que o arquivo pic2.png ainda seja um arquivo PNG válido ...
(2) Incluído em "outras manipulações" está o fato de que não há registro do comprimento original do arquivo ou de qualquer marcador que separe os dois arquivos. Se depois de cat você excluir file_b , não terá como separá-los novamente sem saber o tamanho dos arquivos originais. Um formato de arquivador (tar, zip, rar) está fazendo exatamente esta contabilidade para você (e comprime e soma de verificação e outra coisa, algum dia).