如何在Linux中从命令行拆分和合并文件

时间:2020-03-21 11:47:19  来源:igfitidea点击:

我的Linux桌面上有很多Linux教程视频,我想将所有视频都移到我的Google云端硬盘中。
问题是某些视频文件的大小超过1 GiB。
实际上,将此类大文件上传到Google驱动器不是一个好方法。
尽管Google云端硬盘允许我们上传高达5TB的文件,但我发现上传所有大文件还是非常耗时的过程。
在考虑这个问题的同时,我认为如果能够将这些文件分割成较小的大小并一个接一个地上传它们会更好。
然后,我可以随时下载文件的所有部分,并将它们合并在一起。
这只是一个例子。
我们可能有不同的原因将一个大文件分成多个部分,然后再将它们组合在一起。
如果我们曾经遇到过这种情况,请不要担心。
有一个称为“ split”的简单命令行实用程序,用于将大文件拆分为多个较小的文件。
我们可以稍后将它们全部加入以制作一个文件。
在此教程中,我将展示如何在类似Unix的操作系统中从命令行拆分和合并文件。

在Linux中从命令行分割和合并文件

首先,让我们分割一个大文件。

从命令行在Linux中分割文件

看一下以下视频文件的大小。

$du -h Linux\ Security.mp4

输出示例:

1.1G Linux Security.mp4

如我们所见,视频文件的大小为1.1 GiB,对于上传到我的Google驱动器来说非常大。
即使使用Google云端硬盘,用户也可以上传最大5 TB的文件,但这确实很耗时。
由于我的互联网连接速度较慢,我认为上传时间可能超过30分钟。
我不想再等那么久。
因此,我要做的就是将此文件拆分为多个较小的文件,例如每个100 MB,以加快上传过程。

现在,让我们将以上文件拆分为多个较小的文件,例如每个100MB。
为此,请运行:

$split -b 100M Linux\ Security.mp4 ls.

上面的命令将Linux Security.mp4文件拆分为100MB的块。
此命令创建名为ls.aa,ls.ab,ls.ac ..等的文件。

让我们看一下拆分大文件后的输出。

$ls

输出示例:

'Linux Security.mp4' ls.ab ls.ad ls.af ls.ah ls.aj
 ls.aa ls.ac ls.ae ls.ag ls.ai ls.ak

看到了吗?
Linux Security.mp4文件已拆分为多个名为ls.aa,ls.ab .... ls.ak等的文件。
每个文件大小为100MB。

现在,将它们作为电子邮件附件发送有点容易。

从命令行在Linux中合并文件

将所有文件保存在文件夹中。
然后,转到该文件夹并按如下所示组合它们。

$cat ls.?? > Linux_security.mp4

其中Linux_security.mp4是输出文件名。
双问号(??)匹配文件名中的任何两个字符的扩展名。
简单地说,文件名部分是ls。
匹配所有文件名,例如ls.aa,ls.ab ..etc,并将它们合并为单个文件。
请注意,此命令将合并所有包含两个字符扩展名的文件。
因此,请确保在合并文件之前。
如果还有其他带有两个字母扩展名的文件,它们也将合并到输出文件中。

另外,合并时不要忘记提及正确的扩展名。
如果我们想通过邮件将所有文件发送给朋友,请告诉他/她我们发送的文件的正确扩展名。
他/她在组合它们时应在输出文件中使用相同的文件扩展名。

如果未在split命令中指定任何参数,则该文件将拆分为多个较小的文件,并以x 作为文件名。
默认情况下,每个文件将包含1000行。
其中
是默认情况下为每个文件名添加的两个字符后缀。

让我们使用split命令拆分相同的文件,而无需指定任何另外的参数,如下所示。

$split Linux\ Security.mp4

此命令将Linux安全文件拆分为多个较小的文件,并以x **作为文件名。

运行“ ls”命令以查看文件:

$ls

输出示例:

Linux Security.mp4 xaj xat xbd xbn xbx xch xcr xdb xdl xdv xef xep xez xfj
xaa xak xau xbe xbo xby xci xcs xdc xdm xdw xeg xeq xfa xfk
xab xal xav xbf xbp xbz xcj xct xdd xdn xdx xeh xer xfb xfl
xac xam xaw xbg xbq xca xck xcu xde xdo xdy xei xes xfc xfm
xad xan xax xbh xbr xcb xcl xcv xdf xdp xdz xej xet xfd
xae xao xay xbi xbs xcc xcm xcw xdg xdq xea xek xeu xfe
xaf xap xaz xbj xbt xcd xcn xcx xdh xdr xeb xel xev xff
xag xaq xba xbk xbu xce xco xcy xdi xds xec xem xew xfg
xah xar xbb xbl xbv xcf xcp xcz xdj xdt xed xen xex xfh
xai xas xbc xbm xbw xcg xcq xda xdk xdu xee xeo xey xfi

每个文件应包含1000行。
我们还可以使用wc(字数计数)命令验证它,如下所示。

$wc -l *

输出示例为:

142891 Linux Security.mp4
 1000 xaa
 1000 xab
 1000 xac
 1000 xad
 1000 xae
 1000 xaf
 1000 xag
 1000 xah
 .
 .
 .
 1000 xfl
 891 xfm
 285782 total

要合并所有这些文件,请运行:

$cat x* > ls.mp4

上面的命令会将所有文件组合到一个名为ls.mp4的文件中。

有关更多详细信息,请参见手册页。

$man split