我有一个大文件(例如8GB)。如何将其拆分为多个部分,例如3个相等的部分,之后如何将它们集成在一起?

评论

这似乎是askubuntu.com/questions/12172/…的副本...

您确定“这似乎是”吗?哎呀,这是完全一样的东西。除了这里,现在有了“更多示例和替代方案”的奖励。

如果您更多地说明为什么要拆分它,以及是否要将其仅拆分为字节子字符串,或者是否愿意将它们包装在任何类型的错误检查或标签中,则可能会有所帮助。如果要将它放在较小的介质上或用于网络传输,我会看一下par2之类的东西。

交叉参考:stackoverflow.com/questions/7764755 / ...

一个被N均等分割的衬里:(1.)由行分割--$(($(wc -l <​​$ {your_filename})/ $ {N}))$ {your_filename}(2。字节分割--bytes $(($(wc -c <$ {your_filename})/ $ {N}))$ {your_filename}

#1 楼

有几种方法可以完成此操作。让我们从基本的开始。
使用split和cat命令:
说我有一张图像,它太大了(10MB)。我要做的是:
split --bytes=1M /path/to/image/image.jpg /path/to/image/prefixForNewImagePieces

,然后将其放在一起,我使用cat:
cat prefixFiles* > newimage.jpg

例如:
假设图像所在的文件夹位于:
split --bytes=1M myimage.jpg new

如果图像位于名为images的目录中,您也可以执行以下操作:
split --bytes=1M images/myimage.jpg new

如果图像位于/ home / cyrex / images目录中,则可以执行此操作:
split --bytes=1M /home/cyrex/images/myimage.jpg new

(在以上所有情况下,它都会将myimage.jpg拆分为1MB的块,并在块的名称前加上新词。因此它们看起来像newaanewabnewacnewad ... )
如果要拆分文本文件并想按行拆分,可以执行以下操作:
split -l 1000 book.txt new

这会将文本文件拆分为每个1000行的输出文件。这是拆分文件的另一种方法,主要用于文本文件,例如日志,sql转储,csv文件等。
然后我将它们合并
cat new* > newimage.jpg

这是一种方法。您甚至可以更改分割的片段的大小。只需将表示1个字节的--bytes=1M更改为--bytes=1K或将1GB的字节更改为--bytes=4K,或将其他数字(如ubuntu.iso)更改为4KB片段。鹦鹉螺。它为您提供了一个选项,可以将要压缩的一个或多个文件拆分为较小的兆字节大小。简单易用。
另一种方法是使用7z

假设您有一个名为ubuntu.iso的ISO映像,则可以执行以下操作:
7z a -v5m -mx0 ubuntu.7z ubuntu.iso

这将创建5MB的大小来自-v5m的文件。 -mx0是卷的大小,因此您可以将其更改为10、12、1、3,也可以将m更改为k表示千字节,等等。 q4312079q开关告诉7-Zip不使用压缩,即仅将数据拆分为多个部分。这样,您将提取第一个文件,然后7z开始按顺序从以下文件中提取。您也可以在这里执行
7z x ubuntu.7z.001

,具有相同的效果。

评论


由于还不是开源的,所以不包括rar(据我所知),并且因为我正在寻找进行拆分的简单方法,所以未添加Tar。

–路易斯·阿尔瓦拉多(Luis Alvarado)
2011年7月26日在15:14

也添加gzip-7zip需要软件包安装iirc

–泡沫
2011年7月27日在1:19

据我所知,Gzip(像tar)没有一个简单的选择来拆分压缩文件。在所有情况下,我都看到他们使用split命令“拆分”压缩文件。因此,这不是一个命令,而是一组命令来实现一个单一的目的,而这可以通过单个命令(例如split或7z)来完成。对于7Zip的安装(这是p7zip-full软件包的p7zip),它从未要求我提供iirc;)。

–路易斯·阿尔瓦拉多(Luis Alvarado)
2011年7月27日在2:39

添加了文本文件的拆分。忘记了这一点,今天就这样,我需要分割几个CSV文件。这是针对那些您需要具有特定行数的转储的。

–路易斯·阿尔瓦拉多(Luis Alvarado)
2011年9月9日在22:47

使用7z时,请省略-mx0,以便使用默认设置进行压缩,而不是仅拆分文件。

– Adi Prasetyo
19年11月27日在20:34

#2 楼

使用具有适当编号的split -b,您可以得到三块。 >
size=$(wc -c <"file name")
one_third=$((size/3+1))


手册页将有助于填写详细信息。

评论


您也可以使用split --number来让split为您计算文件数:askubuntu.com/questions/54579/…

– Ciro Santilli郝海东冠状病六四事件法轮功
19年6月28日在13:57

#3 楼

侏儒分裂了吗? http://gnome-split.org/


GNOME Split是一个工具,可用于拆分文件并将其合并回去。它是用Java编写的,并使用GTK +用户界面(由于java-gnome项目)。目标是提供可以处理多种文件格式(例如Xtremsplit)的类似项目的本机实现。


http://www.omgubuntu.co.uk/2010/08/在带有gnome分割的ubuntu中轻松分割大文件/

#4 楼

HOZ-Hacha Open Zource v1.65-http://hoz.sourceforge.net/



来自开发人员:


OZ是您所谓的“文件拆分器”。它的文件格式与“ Hacha”软件所使用的格式相同,该软件是西班牙和拉丁美洲的著名拆分器。 HOZ是兼容“ Hacha”的分离器的开源且可移植的C
实现。

HOZ比“ Hacha”更小,更快。我在'Zource'中使用了'S'的'Z'字母,因为'hoz'是西班牙语的
'镰刀',并且因为'hacha'是西班牙语的
'axe'。 。


安装后,可以通过将ghoz放到终端中来使用Hoz GUI。操作非常简单,无需解释,但可以在开发人员的网站上找到更多信息。

祝您好运!

#5 楼

WoodCutter

用Java开发的免费文件拆分和合并实用程序。
它是一种小型应用程序,允许用户以KB,MB或GB的大小拆分任何类型的文件。

适用于Linux和Windows。

WoodCutter提供了三种合并原始文件的方式。 WoodCutter创建一个合并文件,WoodCutter应用程序可以对其进行处理,以将所有文件重新结合在一起。如果拆分文件的接收者未安装WoodCutter,则也可以获取原始文件,因为WoodCutter还创建了批处理文件和Shell脚本文件以将文件合并回去。该批处理文件将在Windows平台上使用,而Shell脚本将在Linux平台上使用。

http://java-puzzle.blogspot.com/2009/07/woodcutter.html

评论


许可证是“免费软件”。我认为回购中的免费软件工具是更好的解决方案。

–泡沫
2011年9月11日15:14

#6 楼

split --number

这是一个生成N个大小相同的文件的好选择,但最后一个文件可能由于不可分割性而更大。例如:

printf '0123456789' > f.txt
split -d --number 2 f.txt f.txt.part.
tail f.txt.part.*


给出:

==> f.txt.part.00 <==
01234
==> f.txt.part.01 <==
56789


并且: br />
给出:

split -d --number 3 f.txt f.txt.part.
tail f.txt.part.*


-b +显式尺寸计算相比,在以下网址中提到:https://askubuntu.com/a/54584 / 52975,最后一个文件可能比以前的文件大2倍,这有时不利于此选项。但是,它更方便很多次,因为您不必自己进行大小计算。

请问相等数量的行:https://stackoverflow.com/questions/2016894/how将大文本文件分割成行数相等的小文件

已在Ubuntu 43.04的split 2.28中进行了测试。