【发布时间】:2019-01-20 10:50:04
【问题描述】:
我正在合并三个三个文件(ls -l):
-rw-rw-r-- 1 kacper kacper 1839510 sie 13 14:27 A.jpg
-rw-rw-r-- 1 kacper kacper 2014809 sie 13 14:27 B.jpg
-rw-rw-r-- 1 kacper kacper 1277047 sie 13 14:27 C.pdf
使用 bash 合并到一个文件中:
cat A.jpg >> merged
echo $SEPARATOR >> merged
cat B.jpg >> merged
echo $SEPARATOR >> merged
cat C.pdf >> merged
地点:
SEPARATOR=PO56WLH82SN1ZS5QH5EU9FOZVLBRLHAGHO3D5KOUSPMS6KYSFAYN2DBL
接下来我将合并的文件分成三个部分:
csplit --suppress-matched merged --prefix="PART_" '/'$SEPARATOR'/' {*}
这会产生 PART_00、PART_01、PART_02 (ls -l):
-rw-rw-r-- 1 kacper kacper 1839398 sie 13 18:41 PART_00
-rw-rw-r-- 1 kacper kacper 2014507 sie 13 18:41 PART_01
-rw-rw-r-- 1 kacper kacper 1277047 sie 13 18:41 PART_02
PART_00 和 PART_01 为 JPG 文件,可以正常显示。 PART_02 是一个 PDF 文件,可以打开和查看。所以,乍一看,这在我看来是成功的。
问题在于 PART_00(1839398 字节)的大小比 A.jpg(1839510 字节)略小。其他文件(PART_01、B.jpg 和 PART_02、C.pdf)也是如此。使用
逐字节检查文件后cmp
到其中一个文件结束时,这对文件完全相同。
有人知道为什么会这样吗?建议将不胜感激。
【问题讨论】:
-
最有可能和 X-Y 问题。你为什么做这个?你知道
tar和朋友吗? -
嗨 karakfa。这最终将用于将进程的输出流拆分为单独的数据块,tar 可能不是这项工作的工具。