拆分两个文件

Split two files

我在 android 中合并了两个文件,使用这个 Linux 命令

cat file1.png file2.zip > file3.png

如何再次拆分两个文件?我只想单独检索 zip 文件。

有没有具体的命令?我试过这些代码:

unzip file3.png

用 zip 替换了 png:

unzip file3.zip

但其中 none 有效。 我可以打开组合的唯一应用程序是 windows

上的 winrar

我还在 android 上尝试了几个解压缩和解压应用程序,但 none 除了 rarlab 的 RAR 应用程序

我在 unrar/unzip 文件中提到的那些应用程序是否有任何来源?

您需要知道的是,PNG 文件以十六进制值 0x89 开头,后跟文本 PNG。 Zip 文件以 PK 0x04 0x03 开头。您可以编写一个实用程序来读取文件并将读入的字节输出到新文件,当检测到某个文件签名时使用新的输出文件。

对于一次性解决方案,您可以使用 vim,但您必须小心阻止 vim 在行尾添加换行符。

为了安全起见复制你的输入文件

cp file3.png f1
cp file3.png f2

vim -b f1

并在 vim 中输入

:set noeol

搜索 zip 文件的开头

/PK

正在检查找到的序列是 PK^C^D。如果没有,寻找下一场比赛。

PK删除行尾
d$

向下移动一行,删除文件的剩余部分并保存

j
:.,$ d
ZZ

同理,f2删除文件开头,得到zip文件

注意:不要将 f2 命名为 f2.zip,因为 vim 足够聪明,可以将其作为 zip 文件打开,这不是您想要的。

严格来说:没办法。

您可能会在上面的答案中寻找 PK 0x04 0x03 作为分隔符,但您无法保证此字符序列也不会出现在 file1.png 的图像数据中.

总而言之,这是一个有趣的问题。如果您想定期像这样拆分文件,请重新考虑您的策略。如果您需要它来纠正一次性错误或其他问题,您可以分开查找分隔符,并且在超过 99% 的情况下都可以。

我不确定你试图通过 "hiding" 将 zip 文件转换为 PNG 来完成什么,但是如果你试图制作 Winrar 可以打开的单个文件,那么这是一种奇怪的方法.

当您 cat 将文件添加到 zip 文件的开头或结尾时,您不会创建 .zip(或任何其他类型的存档)文件。这只是将两个二进制文件附加在一起。

winrar 可以打开您的 "combined" 二进制文件的原因是它最有可能识别文件头并且可以破译您有 2 个文件。

我建议您查看 zip 命令的用法,了解如何 文件添加到存档中。我快速搜索显示,例如

zip -rv zipfile.zip newfile.txt

将 newfile.txt 添加到 zipfile.zip。