激战的后厨2观看完整版,強姦亂倫強姦在线观看,国产无套内射普通话对白,老头呻吟喘息硕大撞击,他扒开我小泬添我三男一女视频

首頁>高防服務器問答/資訊>在 Linux 中分割和重組文件

在 Linux 中分割和重組文件

發布時間:2023/3/21 11:37:41

在 Linux 中分割和重組文件

非常有用的 csplit 命令可以將單個文件分割成多個文件。Carla Schroder 解釋說。

Linux 有幾個用于分割文件的工具程序。那么你為什么要分割文件呢?一個用例是將大文件分割成更小的尺寸,以便它適用于比較小的存儲介質,比如 U 盤。當您遇到 FAT32(最大文件大小為 4GB),且您的文件大于此時,通過 U 盤傳輸文件也是一個很好的技巧。另一個用例是加速網絡文件傳輸,因為小文件的并行傳輸通常更快。

我們將學習如何使用 csplit,split 和 cat 來重新整理文件,然后再將文件合并在一起。這些操作在任何文件類型下都有用:文本、圖片、音頻文件、ISO 鏡像文件等。

使用 csplit 分割文件

csplit 是這些有趣的小命令中的一個,它永遠伴你左右,一旦開始用它就離不開了。csplit 將單個文件分割成多個文件。這個示例演示了最簡單的使用方法,它將文件 foo.txt 分為三個文件,以行號 17 和 33 作為分割點:

$ csplit foo.txt 1733

2591

3889

2359

csplit 在當前目錄下創建了三個新文件,并以字節為單位打印出新文件的大小。默認情況下,每個新文件名為 xx_nn:

$ ls

xx00

xx01

xx02

您可以使用 head 命令查看每個新文件的前十行:

$ head xx*

==> xx00 <==

FooFile

by CarlaSchroder

Foo text

Foo subheading

More foo text

==> xx01 <==

Foo text

Foo subheading

More foo text

==> xx02 <==

Foo text

Foo subheading

More foo text

如果要將文件分割成包含相同行數的多個文件怎么辦?可以指定行數,然后將重復次數放在在花括號中。此示例重復分割 4 次,并將剩下的轉儲到最后一個文件中:

$ csplit foo.txt 5{4}

57

1488

249

1866

3798

您可以使用星號通配符來告訴 csplit 盡可能多地重復分割。這聽起來很酷,但是如果文件不能等分,則可能會失敗(LCTT 譯注:低版本的 csplit 不支持此參數):

$ csplit foo.txt 10{*}

1545

2115

1848

1901

csplit:'10': line number out of range on repetition 4

1430

默認的行為是刪除發生錯誤時的輸出文件。你可以用 -k 選項來解決這個問題,當有錯誤時,它就不會刪除輸出文件。另一個行為是每次運行 csplit 時,它將覆蓋之前創建的文件,所以你需要使用新的文件名來分別保存它們。使用 --prefix= _prefix_ 來設置一個不同的文件前綴:

$ csplit -k --prefix=mine foo.txt 5{*}

57

1488

249

1866

993

csplit:'5': line number out of range on repetition 9

437

$ ls

mine00

mine01

mine02

mine03

mine04

mine05

選項 -n 可用于改變對文件進行編號的數字位數(默認是 2 位):

$ csplit -n 3--prefix=mine foo.txt 5{4}

57

1488

249

1866

1381

3798

$ ls

mine000

mine001

mine002

mine003

mine004

mine005

csplit 中的 “c” 是上下文(context)的意思。這意味著你可以根據任意匹配的方式或者巧妙的正則表達式來分割文件。下面的例子將文件分為兩部分。第一個文件在包含第一次出現 “fie” 的前一行處結束,第二個文件則以包含 “fie” 的行開頭。

$ csplit foo.txt /fie/

在每次出現 “fie” 時分割文件:

$ csplit foo.txt /fie/{*}

在 “fie” 前五次出現的地方分割文件:

$ csplit foo.txt /fie/{5}

僅當內容以包含 “fie” 的行開始時才復制,并且省略前面的所有內容:

$ csplit myfile %fie%

將文件分割成不同大小

split 與 csplit 類似。它將文件分割成特定的大小,當您將大文件分割成小的多媒體文件或者使用網絡傳送時,這就非常棒了。默認的大小為 1000 行:

$ split foo.mv

$ ls-hl

266KAug2116:58 xaa

267KAug2116:58 xab

315KAug2116:58 xac

[...]

它們分割出來的大小相似,但你可以指定任何你想要的大小。這個例子中是 20M 字節:

$ split-b 20M foo.mv

尺寸單位縮寫為 K,M,G,T,P,E,Z,Y(1024 的冪)或者 KB,MB,GB 等等(1000 的冪)。

為文件名選擇你自己的前綴和后綴:

$ split-a 3--numeric-suffixes=9--additional-suffix=mine foo.mv SB

240KAug2117:44 SB009mine

214KAug2117:44 SB010mine

220KAug2117:44 SB011mine

-a 選項控制編號的數字位置。--numeric-suffixes 設置編號的開始值。默認前綴為 x,你也可以通過在文件名后輸入它來設置一個不同的前綴。

將分割后的文件合并

你可能想在某個時候重組你的文件。常用的 cat 命令就用在這里:

$ cat SB0*> foo2.txt

示例中的星號通配符將匹配到所有以 SB0 開頭的文件,這可能不會得到您想要的結果。您可以使用問號通配符進行更精確的匹配,每個字符使用一個問號:

$ cat SB0??????> foo2.txt

和往常一樣,請查閱相關的手冊和信息頁面以獲取完整的命令選項。

在線客服
微信公眾號
免費撥打0592-5580190
免費撥打0592-5580190 技術熱線 0592-5580190 或 18950029502
客服熱線 17750597993
返回頂部
返回頭部 返回頂部