使用split命令分割Linux文件
一些簡(jiǎn)單的 Linux 命令能讓你根據(jù)需要分割以及重新組合文件,來(lái)適應(yīng)存儲(chǔ)或電子郵件附件大小的限制。
Linux 系統(tǒng)提供了一個(gè)非常易于使用的命令來(lái)分割文件。在將文件上傳到限制大小的存儲(chǔ)網(wǎng)站或者作為郵件附件之前,你可能需要執(zhí)行此操作。要將文件分割為多個(gè)文件塊,只需使用 split
命令。
$ split bigfile
默認(rèn)情況下,split
命令使用非常簡(jiǎn)單的命名方案。文件塊將被命名為 xaa
、xab
、xac
等,并且,大概地,如果你將足夠大的文件分割,你甚至可能會(huì)得到名為 xza
和 xzz
的塊。
除非你要求,否則該命令將無(wú)任何反饋地運(yùn)行。但是,如果你想在創(chuàng)建文件塊時(shí)看到反饋,可以使用 --verbose
選項(xiàng)。
$ split –-verbose bigfile
creating file 'xaa'
creating file 'xab'
creating file 'xac'
你還可以給文件命名前綴。例如,要將你原始文件分割并命名為 bigfile.aa
、bigfile.ab
等,你可以將前綴添加到 split
命令的末尾,如下所示:
$ split –-verbose bigfile bigfile.
creating file 'bigfile.aa'
creating file 'bigfile.ab'
creating file 'bigfile.ac'
請(qǐng)注意,上述命令中顯示的前綴的末尾會(huì)添加一個(gè)點(diǎn)。否則,文件將是 bigfileaa
之類的名稱,而不是 bigfile.aa
。
請(qǐng)注意,split
命令不會(huì)刪除你的原始文件,只是創(chuàng)建了文件塊。如果要指定文件塊的大小,可以使用 -b
選項(xiàng)將其添加到命令中。例如:
$ split -b100M bigfile
文件大小可以是 KB、MB,GB,最大可以是 YB!只需使 K、M、G、T、P、E、Z 和 Y 這些合適的字母。
如果要基于每個(gè)塊中的行數(shù)而不是字節(jié)數(shù)來(lái)拆分文件,那么可以使用 -l
(行)選項(xiàng)。在此示例中,每個(gè)文件將有 1000 行,當(dāng)然,最后一個(gè)文件可能有較少的行。
$ split --verbose -l1000 logfile log.
creating file 'log.aa'
creating file 'log.ab'
creating file 'log.ac'
creating file 'log.ad'
creating file 'log.ae'
creating file 'log.af'
creating file 'log.ag'
creating file 'log.ah'
creating file 'log.ai'
creating file 'log.aj'
如果你需要在遠(yuǎn)程站點(diǎn)上重新組合文件,那么可以使用如下所示的 cat
命令輕松地完成此操作:
$ cat x?? > original.file
$ cat log.?? > original.file
上面所示的分割和組合命令適合于二進(jìn)制和文本文件。在此示例中,我們將 zip 二進(jìn)制文件分割為 50KB 的塊,之后使用 cat
重新組合了它們,然后比較了組合后的文件和原始文件。diff
命令驗(yàn)證文件是否相同。
$ split --verbose -b50K zip zip.
creating file 'zip.aa'
creating file 'zip.ab'
creating file 'zip.ac'
creating file 'zip.ad'
creating file 'zip.ae'
$ cat zip.a? > zip.new
$ diff zip zip.new
$ <== 無(wú)輸出 = 無(wú)差別
我唯一要提醒的一點(diǎn)的是,如果你經(jīng)常使用 split
并使用默認(rèn)命名,那么某些文件塊可能會(huì)覆蓋其他的文件塊,甚至?xí)饶泐A(yù)期的更多,因?yàn)橛行┦歉缰胺指畹摹?nbsp;