如何在 Linux 中将文件分割成多个部分
本教程介绍了如何在 Linux 中轻松地将文件按大小、多个文件、内容和更多选项拆分为多个部分。阅读本文后,您将了解如何使用 split 和 csplit 命令来拆分文件以及如何合并或连接文件片段。
如何在Linux中按大小分割文件:
对于本教程的第一个示例,我将使用名为 WIN10X64.ISO 的 5GB Windows ISO 映像。要了解要拆分的文件大小,可以使用 du -h 命令,如下面的屏幕截图所示。
如您所见,文件大小为 5GB。要将其拆分为 5 个文件,每个文件大小为 1GB,您可以使用 split 命令,后跟 -b 标志以及您想要的分割文件大小。定义 GB 大小单位的 G 可以替换为 M(表示兆字节)或 B 代表字节。
正如您所看到的,ISO 被分为 5 个文件,分别名为 xaa、xab、xac、xad 和 xae。
默认情况下,split 命令命名上一示例中生成的文件,其中 xaa 是第一部分,xab 是第二部分, xac 第三个,等等。如下面的示例所示,您可以更改它并定义一个名称,保留默认名称作为扩展名。
正如你所看到的,所有文件都被命名为 Windows.* ,这是 split 命令给出的名称的扩展名,这使我们能够知道文件的顺序。
使用 split 命令时,您可以为打印进度的命令实现详细程度,如下面的屏幕截图所示。
正如你所看到的,进度输出显示了文件分割的阶段。下一个示例显示如何将文件拆分为 MB 单位。该文件是一个 85MB 的文件。
split 命令包括本教程中未解释的其他有趣功能。您可以在 https://man7.org/linux/man-pages/man1/split.1.html 获取有关 split 命令的更多信息。
如何在 Linux 中使用 csplit 按内容分割文件:
在某些情况下,用户可能希望根据文件的内容分割文件。对于这种情况,前面解释的 split 命令没有用。实现此目的的替代方法是使用 csplit 命令。
在本教程部分中,您将学习如何在每次找到特定正则表达式时分割文件。我们将使用一本书,并将其分为几章。
如下图所示,我们有 4 个章节(它们经过编辑以便您可以看到章节划分)。假设您希望将每一章放入不同的文件中。为此,我们将使用的正则表达式是“Chapter”。
我知道这本书有 4 章,所以我们需要指定我们想要防止错误的拆分数量。在下面的示例中,我解释了如何在不知道正则表达式或拆分数量的情况下进行拆分。但在本例中,我们知道有 4 章;因此,我们需要将文件分割3次。
运行 csplit,后跟要拆分的文件、斜杠之间的正则表达式以及大括号之间的拆分数量,如下例所示。
我们看到的输出是每个文件片段的字节数。
可以看到,创建了5个文件,第1章之前的空白空间也被划分了。
这些文件的命名方式与使用前面解释的 split 命令时的名称相同。我们来看看他们是如何划分的。
第一个文件xx00是空的,它是第一次出现“Chapter”正则表达式之前的空白空间,文件被分割。
第二部分仅正确显示了第一章。
第三部分展示了第二章。
第四部分展示了第三章。
最后一块展示了第四章。
如前所述,指定正则表达式的数量是为了防止错误结果。默认情况下,如果我们不指定分割次数,csplit 只会对文件进行一次分割。
以下示例显示了上一个命令的执行,但未指定分割数。
正如您所看到的,因为我们没有指定拆分数量,所以只生成了一个拆分和两个文件。
此外,如果您输入错误的拆分数量,例如,只有 4 个正则表达式的 6 个拆分,您将收到错误,并且不会发生拆分,如下例所示。
那么当内容太长,并且你不知道内容中有多少个正则表达式要拆分时该怎么办呢?在这种情况下,我们需要实现通配符。
通配符将生成许多片段作为文档中找到的正则表达式,而无需您指定它们。
如您所见,文件已正确分割。
csplit 命令包括本教程中未解释的其他有趣功能。您可以在 https://man7.org/linux/man-pages/man1/csplit.1.html 获取有关 split 命令的更多信息。
如何合并或连接文件:
现在您知道如何根据大小或内容拆分文件。下一步是合并或连接文件。使用 cat 命令可以轻松完成任务。
如下所示,如果我们使用 cat 和通配符读取所有文件的片段,cat 命令将按名称的字母顺序对它们进行排序。
正如您所看到的,猫能够正确地对文件进行排序。连接或合并文件包括导出此结果;您可以按照下面的示例所示进行操作,其中combinedfile是组合文件的名称。
如下图所示,文件已正确合并。
结论:
正如您所看到的,在 Linux 中将文件拆分为多个部分非常容易,您只需要知道什么是适合您的任务的工具即可。对于任何 Linux 用户来说,学习这些命令及其优点都是值得的,例如,当通过不稳定的连接或通过限制文件大小的通道共享文件时。这两个工具都有许多本教程中未解释的附加功能,您可以在它们的手册页上阅读。
我希望本教程解释如何在 Linux 中将文件拆分为多个部分,对您有所帮助。继续关注此站点以获取更多 Linux 技巧和教程。