使用 split 命令分割 Linux 檔案

Sandra Henry-stocker發表於2019-12-16

一些簡單的 Linux 命令能讓你根據需要分割以及重新組合檔案,來適應儲存或電子郵件附件大小的限制。

Linux 系統提供了一個非常易於使用的命令來分割檔案。在將檔案上傳到限制大小的儲存網站或者作為郵件附件之前,你可能需要執行此操作。要將檔案分割為多個檔案塊,只需使用 split 命令。

$ split bigfile

預設情況下,split 命令使用非常簡單的命名方案。檔案塊將被命名為 xaaxabxac 等,並且,大概地,如果你將足夠大的檔案分割,你甚至可能會得到名為 xzaxzz 的塊。

除非你要求,否則該命令將無任何反饋地執行。但是,如果你想在建立檔案塊時看到反饋,可以使用 --verbose 選項。

$ split –-verbose bigfile
creating file 'xaa'
creating file 'xab'
creating file 'xac'

你還可以給檔案命名字首。例如,要將你原始檔案分割並命名為 bigfile.aabigfile.ab 等,你可以將字首新增到 split 命令的末尾,如下所示:

$ split –-verbose bigfile bigfile.
creating file 'bigfile.aa'
creating file 'bigfile.ab'
creating file 'bigfile.ac'

請注意,上述命令中顯示的字首的末尾會新增一個點。否則,檔案將是 bigfileaa 之類的名稱,而不是 bigfile.aa

請注意,split 命令不會刪除你的原始檔案,只是建立了檔案塊。如果要指定檔案塊的大小,可以使用 -b 選項將其新增到命令中。例如:

$ split -b100M bigfile

檔案大小可以是 KB、MB,GB,最大可以是 YB!只需使 K、M、G、T、P、E、Z 和 Y 這些合適的字母。

如果要基於每個塊中的行數而不是位元組數來拆分檔案,那麼可以使用 -l(行)選項。在此示例中,每個檔案將有 1000 行,當然,最後一個檔案可能有較少的行。

$ 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'

如果你需要在遠端站點上重新組合檔案,那麼可以使用如下所示的 cat 命令輕鬆地完成此操作:

$ cat x?? > original.file
$ cat log.?? > original.file

上面所示的分割和組合命令適合於二進位制和文字檔案。在此示例中,我們將 zip 二進位制檔案分割為 50KB 的塊,之後使用 cat 重新組合了它們,然後比較了組合後的檔案和原始檔案。diff 命令驗證檔案是否相同。

$ 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
$                    <== 無輸出 = 無差別

我唯一要提醒的一點的是,如果你經常使用 split 並使用預設命名,那麼某些檔案塊可能會覆蓋其他的檔案塊,甚至會比你預期的更多,因為有些是更早之前分割的。


via: https://www.networkworld.com/article/3489256/breaking-linux-files-into-pieces-with-the-split-command.html

作者:Sandra Henry-Stocker 選題:lujun9972 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

使用 split 命令分割 Linux 檔案

訂閱“Linux 中國”官方小程式來檢視

相關文章