Divida um grande arquivo compactado com base em hex / string

Sep 29 2020

Eu tenho um grande arquivo de pacote que contém muitos arquivos. Por exemplo, um arquivo denominado " Data.Rpack " que contém 50 arquivos * .PNG . Quando abri um arquivo de imagem PNG com o Notepad ++, ele começou com " ‰PNG" E então abri " Data.Rpack " e encontrei 50 " ‰PNG" nele.

Como isso:

‰PNG~~~%~~~~‰PNG~~~~$~~~‰PNG~~~~@~!~~‰PNG~~~5~~M~~ , etc

Quero dividir esse arquivo grande em 50 arquivos, onde cada arquivo começa com " ‰PNG".

Portanto, ele será salvo em vários arquivos, como este:

Data1.PNG
Data2.PNG
Data3.PNG
Data4.PNG
etc.

Parece extrair arquivos com base em uma string (ou hex) com o mesmo formato.

A extensão do arquivo não é RPACK. Eu o escrevi como um exemplo de tipo de arquivo.

O arquivo que tenho é apenas um pacote de arquivos comum, muitos arquivos sem qualquer compactação e não criptografados. Em um pacote de arquivos, podemos ter algum arquivo PNG, WAV ou DDS, e posso dividi-lo manualmente usando HxD, mas às vezes um pacote de arquivo pode conter centenas de arquivos, por isso é difícil dividi-lo manualmente um por um.

Respostas

1 harrymc Sep 29 2020 at 17:13

Você pode usar o programa csplit , que pode dividir em uma string ou padrão regex (entre outras opções).

Csplit está disponível no Windows em WSL ou outros pacotes portando aplicativos Linux.

Alguns desses pacotes são CoreUtils para Windows , Tiny Unix Tools para Windows ou Cmder .