如果我将文件 cat 到其他文件,有没有办法将它们再次分开?

如果我将文件 cat 到其他文件,有没有办法将它们再次分开?

如果我使用,cat pic1.png >> pic2.png有没有办法摆脱pic1.pngpic2.png

我知道如果我只是使用一些存档文件并简单地取消存档它就可以工作,但我想知道是否有可能通过其他方式实现。

答案1

您只是将cat file_b >> file_a的内容附加到。没有格式更改,也没有其他操作 (1)(2)。file_bfile_a

您可以通过删除文件的最后几个字节来返回;可能是这样的

 head --bytes=-$(wc --bytes file_b | cut -d" " -f1) file_a > old_file_a

应该管用。

解释:

wc --bytes file_b 

返回字节长度file_b(以及文件的名称,如“ 5678 file_b”)

wc --bytes file_b | cut -d" " -f1

wc通过仅保留第一个字段(“ ”)来删除输出中的文件名5678。然后我们使用进程替换将该数字作为参数传递给head

head --bytes=-5678 file_a 

输出所有内容file_a 最后 5678 个字节。


脚注:

(1)在OP示例中,我怀疑该pic2.png文件是否仍然是有效的PNG文件......

(2) “其他操作”包括没有记录文件的原始长度或任何分隔两个文件的标记。如果在cat删除后file_b,您无法在不知道原始文件长度的情况下再次将它们分开。归档格式(tar、zip、rar)正是为您进行这种簿记(有时还会进行压缩和校验和其他操作)。

答案2

一种方法是查看 PNG 文件格式

https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header

PNG 文件格式有一个标头和一系列块,它们定义了 PNG 文件的构造方式。如果您链接这些块,您应该能够提取 PNG 文件。您可能会很幸运,只需使用 PNG 文件的前 8 个字节作为标识符即可找到分离点。

相关内容