Linux 提供了许多用于文本操作和处理的命令,其中包括 split 命令。使用 split 命令,您可以轻松地将大文件拆分为较小的文件,或根据特定条件提取文件的特定部分。
让我们来探索如何在 Linux 中使用 split 命令来拆分文件。无论您需要从大文件中提取特定部分,还是将文件拆分为较小的块,split 命令都可以帮助您轻松实现目标。
什么是 split 命令?
split命令是由Torbjorn Granlund和Richard M. Stallman创建的流行的Linux命令行工具。顾名思义,split命令用于将文件拆分为较小的子文件。
该命令对于管理大型文件或在带宽有限的网络上传输文件非常有用。通过将大文件拆分为较小的部分,您可以减少需要传输或存储的数据量。您还可以使用split命令的逆操作将多个文件合并为一个文件。
split命令的语法
split命令的基本语法如下:split [选项]… [文件] [前缀]
- [选项]:split命令有不同的选项,用于决定如何拆分文件以及您可能有兴趣添加的其他特定功能。
- [文件]:这是您要拆分的文件的路径。
- [前缀]:这是子文件的前缀。
如何使用 split 命令
您可以使用split命令按大小或长度将大文件分割为较小的文件。您甚至可以选择您想要的具体数量的较小文件。
为了演示,我们将使用一个名为linuxmi.txt的文本文件。请为本教程选择一个具有多行和相当大文件大小的文本文件。如果您没有这样的文件,您可以使用 Linux 文本编辑器或 cat 命令粘贴大量文本并保存。
根据行数拆分大文件
您可以使用split命令根据每个文件的特定行数将大文件分割为较小文件。
以下是语法:split -l [行数] [输入文件] [输出文件前缀]
例如,您可能希望将一个包含 210 行的文件分割为每个文件50行;您将获得五个较小的文件。前四个文件每个有50行,第五个文件只包含10行。
要将名为”largefile.txt”的文件拆分为每个文件100行的较小文件,请运行以下命令:
┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ split -l 100 linuxmi.txt smallfile
使用ls命令列出目录内容,您将看到拆分后的文件。
您还可以使用split命令根据特定的文件大小将大文件拆分为较小的文件。
以下是基本的语法:split -b [以字节为单位的大小] [输入文件] [输出文件前缀]
通过运行以下命令将largefile.txt拆分为每个文件300字节的较小文件:
┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ split -b 300 linuxmi.txt smallfile
这是结果:
按大小拆分大文件的结果
将大文件分割为特定数量的文件
您还可以将文件分割为固定数量的文件,而不考虑文件中的文件数和字节数。您可以使用-n选项来实现这一点。以下是语法:
split -n [文件数量] [输入文件] [输出文件前缀] 要将大文件分割为五个部分,请执行以下命令:
┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ split -n 5 linuxmi.txt smallfile
结果应该如下所示:
按文件数量拆分大文件
更改拆分文件的后缀长度
您可能已经注意到,附加到输出文件名的后缀的默认长度为两个字符。例如,smallfileaa,smallfileab,smallfileac等。
要更改后缀的长度,您可以使用 -a 选项。以下是更改后缀长度的语法:
split -a [后缀长度] [输入文件] [输出文件前缀]
您可以将此后缀长度选项与其他 split 命令一起使用。要将 linuxmi.txt 文件分割为10个部分,并具有 4 个字符的后缀长度,请执行以下命令:
┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ split -a 4 -n 10 linuxmi.txt smallfile
当您列出目录的内容时,输出应如下所示:
将大文件拆分为具有较长后缀的较小文件
使用cat合并多个文件
好消息是,您始终可以将拆分的文件合并在一起,以生成原始文件。要将拆分的文件合并回原始文件,请使用cat命令。以下是执行此操作的语法:
cat [拆分文件] > [输出文件]
在使用cat命令合并拆分文件时,指定拆分文件的正确顺序非常重要。
cat命令只是按照指定顺序连接文件,因此如果文件顺序不正确,合并后的文件将损坏。
在拥有许多拆分文件的情况下,例如一百个拆分文件,逐个键入每个文件并按照正确的顺序进行操作将会很麻烦。
这就是前缀的作用。只需添加一个星号(*),就可以合并以该前缀开头的所有文件。
cat prefix* > [输出文件]
以下是一个示例命令,它将拆分文件smallfileaa、smallfileab、smallfileac和smallfilead合并成一个名为linuxmi.txt的文件:
┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ cat smallfile* > linuxmi.txt
此命令将连接与模式smallfile*匹配的所有拆分文件的内容,并将输出重定向到一个名为 bigfile.txt 的新文件。它还将按照文件名的自然顺序列出拆分文件,这应该是合并的正确顺序。
使用Linux工具提高效率
split 命令只是 Linux 提供的众多工具之一,它可以通过将大文件拆分为更小、更易管理的块来帮助您高效地管理大文件。
通过掌握 Linux 文本处理命令,您可以节省时间和资源,提高效率。