如何将较大的文件拆分为较小的部分?


189

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



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

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


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

Answers:


272

有几种方法可以完成此操作。让我们从基本的开始。

使用splitcat命令:

让我们说我有一张图片,该图片太大(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

这是一种方式。您甚至可以更改分割的片段的大小。只要改变写着部分--bytes=1M--bytes=1K1千字节或1G为千兆,或像另一号码--bytes=4K为4KB块。

使用鹦鹉螺

另一种方法是Nautilus的gui中的compress选项。它为您提供了一个选项,可以将要压缩的一个或多个文件拆分为较小的兆字节大小。它简单易行。

还有一种方法是使用7z

假设您有一个称为的ISO映像ubuntu.iso,则可以执行以下操作:

7z a -v5m -mx0 ubuntu.7z ubuntu.iso

这将从中创建5MB大小的文件ubuntu.iso。的-v5m是体积大小,以便可以将其改变为10,12,如图1,3和也米可以改变为K表示千字节等; 该-mx0开关通知的7-Zip使用无压缩,即,只是为了数据拆分成部分。

提取只是做

7z x ubuntu.7z.001

这样,您将提取第一个文件,然后7z按顺序开始从以下文件中提取。你也可以

7z e ubuntu.7z.001

在这里有相同的效果。


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

还要添加gzip-7zip需要软件包安装iirc
Broam 2011年

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

添加了文本文件的拆分。忘记了这一点,今天就发生了,我需要分割几个CSV文件。这是针对那些您需要具有特定行数的转储的。
路易斯·阿尔瓦拉多


4

HJSplit

是一个流行的免费软件,用于拆分和重组文件。该程序在Windows,Linux和其他各种平台上都可用。

HJSplit for Linux是具有完整图形用户界面的Linux免费软件文件拆分器。HJSplit支持超过100 GB的文件大小,拆分,加入/重组,MD5校验和,文件比较,“无需安装即可运行”,并且该程序可完全移植。

适用于Linux的HJSplit不需要安装,它不依赖于任何特殊的库。只需将hjsplitlx.tar.gz存档解压缩到您选择的目录中,然后从Linux文件管理器或终端窗口启动该程序。您可能需要将程序的文件权限调整为“可执行”。

在此处输入图片说明


1
我必须说Windows文件也可以在Linux上运行。
Uri Herrera

2
在必须进入这样的程序之前,有几种分割/合并文件的方法。我宁愿使用linux提供的强大选项,并且使用它提供的一些非常快速,安全的方式来分割/合并文件。
Luis Alvarado

3
它安全,快速并且是包含LINUX的跨平台软件,它也不是仅恰好也可以在Linux上运行的WINDOWS专用应用程序……
Uri Herrera

2
我使用HJSplit,它非常简单。当您只需将参数值填充到文本框中时,无需键入命令和参数名称。
马修(Matthew)

2
而免费下载会使情况变得更糟,因为?而且我必须说,在OP HE那里免费索取免费软件(这是免费的),而您指的是OPEN,您知道有什么区别吗?
Uri Herrera


3

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

在此处输入图片说明

来自开发人员:

OZ是您所谓的“文件拆分器”。其文件格式与“ Hacha”软件使用的格式相同,“ Hacha”软件是西班牙和拉丁美洲的知名拆分器。HOZ是兼容“ Hacha”的分离器的开源和便携式C实现。

HOZ比“ Hacha”更小,更快。

顺便说一句,我在“ Zource”中使用了“ S”的“ Z”代表,因为“ hoz”在西班牙语中是“镰刀”,并且由于“ hach​​a”是西班牙语中的“ axe”一词...

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

祝好运!


0

樵夫

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

它适用于Linux和Windows。

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

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


2
许可证是“免费软件”。我认为存储库中的免费软件工具是更好的解决方案。
Broam 2011年

0

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

和:

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

给出:

==> f.txt.part.00 <==
012
==> f.txt.part.01 <==
345
==> f.txt.part.02 <==
6789

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

在以下位置询问了相等的行数:https : //stackoverflow.com/questions/2016894/how-to-split-a-large-text-file-into-smaller-files-with-equal-number-of-lines

split2.28和Ubuntu 18.04中进行了测试。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.